Javascript 中 test () 和 exec () 方法之间的区别
RegExp.prototype.test() 和 RegExp.prototype.exec() 方法是 JavaScript 中用于处理正则表达式的方法。除了这两个方法之外,JavaScript 还包含许多内置方法,用于使用正则表达式操作和处理文本。
什么是正则表达式?
正则表达式 是用于在字符串中搜索字符组合的模式。正则表达式在 JavaScript 中被视为对象,用"regex"或"RegExp"表示。
exec() 方法
exec() 方法在给定字符串中搜索字符串的指定匹配项。如果在给定的字符串中存在匹配的字符串,则返回一个数组,如果在给定的字符串中找不到匹配的字符串,则返回一个空值。换句话说,exec() 方法将字符串作为参数。此字符串是要在给定字符串中检查匹配的字符串。
语法
这是 JavaScript 中正则表达式 exec() 方法的语法 −
regularExpressionObj.exec(string)
示例
以下是 JavaScript 中 exec() 方法的一个示例。在这里,我们在给定的字符串中搜索特定的单词。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>exec() - Regular Expression in JavaScript</title> </head> <body> <p>click to get exec() method output</p> <button onclick="findMatch()">Search</button> <p id="tutorial"></p> <script> function findMatch() { var txt ="Learning regular expressions in JavaScript"; var search1 = new RegExp("JavaScript"); var search2 = new RegExp("Abdul") var res1 = search1.exec(txt); var res2 = search2.exec(txt); document.getElementById("tutorial").innerHTML ="Given string is:"+txt +"<br>"+ "Specific word to match are:"+search1+" "+search2+"<br>"+"Result of two search keys: "+res1+" "+res2 } </script> </body> </html>
test() 方法
test() 方法在给定字符串中搜索指定的字符串匹配项。exec() 和 test() 方法之间的区别在于,exec() 方法将返回指定的匹配项(如果存在)或 null(如果在给定字符串中不存在),而 test() 方法返回布尔结果,即,如果指定的匹配项存在,则返回 true,否则返回 false(如果不存在)。
语法
这是 JavaScript 中 test() 方法的语法 −
regularExpressionObj.test(string)
这还将给定的输入字符串作为参数并返回布尔结果。
示例
此程序还在字符串中搜索给定的单词,但在这里我们使用 test() 方法。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>test() - Regular Expression in JavaScript</title> </head> <body> <p>click to get exec() method output</p> <button onclick="findMatch()">Search</button> <p id="tutorial"></p> <script> function findMatch() { var txt ="Learning regular expressions in JavaScript"; var search1 = new RegExp("JavaScript"); var search2 = new RegExp("Abdul") var res1 = search1.test(txt); var res2 = search2.test(txt); document.getElementById("tutorial").innerHTML ="Given string is:"+txt+"<br>"+ "Specific word to match are:"+search1+" "+search2+"<br>"+"Result of two search keys: "+res1+" "+res2 } </script> </body> </html>
search() 和 test() 之间的区别
test() 方法验证匹配并返回布尔值,而 exec() 方法捕获组并将正则表达式与输入匹配。如果您只需要测试输入字符串以匹配正则表达式,则 RegExp.test() 最合适。它将为您提供一个布尔值,这使其成为条件的理想选择。
RegExp.exec() 方法为您提供一个类似数组的返回值,其中包含所有捕获组和匹配的索引。因此,当您需要在匹配后使用捕获的组或索引时,它很有用。
示例
在下面的示例中,我们使用这两种方法执行相同的正则表达式。在这里您可以观察到 test() 方法返回一个布尔值,而 exec() 方法返回一个数组。
<!DOCTYPE html> <html> <body> <script> var regex = RegExp("^([a-z]+) ([A-Z]+)$"); document.write("Result of the exec method: "+regex.exec("hello WORLD")) document.write("<br> Result of the test method: "+regex.test("hello WORLD")) </script> </body> </html>
输出
执行上述程序后,您将获得以下输出。
Result of the exec method: hello WORLD,hello,WORLD Result of the test method: true
请注意,exec 返回的数组中的第一个索引是完整匹配的字符串。以下索引是正则表达式捕获的各个组。