JavaScript字符串匹配的介绍
在JavaScript中,我们已经在以前的文章中讨论过,它有一些默认的方法来创建更复杂的客户端Web应用程序。在这些方法中,match()是其中一个内置的方法,用于使用字符串数据类型的格式来检索数据结果,也属于JavaScript中的正则表达式。正则表达式是其中一个对象,如果假设正则表达式(RegExp)对象不属于这种格式,即非正则表达式对象,它也可以在使用new关键字的帮助下自动隐式转换为正则表达式,它是用来创建对象的。如果有时字符串和数组格式返回null值,这些对象也将返回数组作为返回值。
语法
JavaScript内置的方法在客户端脚本中也有自己的特点和用途;在基于网络的应用程序中,它更为复杂。在这些方法中,match()也是预定义的方法,我们将看到这些方法的语法。
<html> <body> <script> function functionname() { var variablename=””; var v1=variablename.match(“strings”); ----some javascript logics----- } </script> </body> </html>
上面的代码是JavaScript中match()方法的基本语法;主要是,该方法将传递正则表达式作为参数,这些参数将与给定的字符串进行匹配。
JavaScript的字符串匹配是如何工作的?
在比较过程中,JavaScript字符串将被用于正则表达式,因为字符串只不过是一组连在一起的字符,被称为字符串。在正则表达式中,它是一种用来定义搜索模式的字符序列的表达式;模式只不过是字符串,所以模式搜索也被称为字符串搜索;它也被用于像查找、查找和替换这样的算法,这是用户验证字符串的两个重要操作。
如果假设我们想知道是否找到了与字符串数据类型相匹配的模式,以使用test()或search()方法获取更多信息,我们可以使用exec()或match()方法,但它的执行速度较慢。如果我们使用这些方法并找到它,如果匹配字符串成功,这些方法将返回一个数据类型的数组并更新它们的属性,与正则表达式对象相关的属性也是使用RegExp.如果匹配值失败,它将使用exec()方法并返回空值。
如果我们不访问正则表达式中的数组类型的值,是不需要访问它们的属性的,另一种方法是在单独的变量脚本中创建一个数组。两个不同语句的出现是使用某种正则表达式对象,因此有一组不同的值用于使用它们的索引属性;如果我们需要访问正则表达式的属性是已经使用它们的对象创建的,它已经被初始化,我们应该把它作为变量分配。一个数组有一些内容,这些内容取决于全局值(flag)的存在与否,或者有时它可以传递空值。如果假设该字符串在脚本中没有找到匹配的集合,则使用全局值,匹配的结果是使用完整的正则表达式集合,将被返回,并将结果显示为一个匹配的字符串。
全局值没有被设置或没有被匹配,否则只有第一组字符串值被匹配,并且它已经与组有关被返回这些返回的值有它们的附加属性。这些对象有自己的属性,可以被命名为组,其组被匹配的键是名称,或者有时我们使用id有整数类型,而值被捕获使用组或未定义的值。使用索引,我们必须在脚本中搜索组和值。
Javascript字符串匹配的例子
下面提到了不同的例子。
例一
代码
<!DOCTYPE html> <html> <body> <p>Welcome To My Domain</p> <button onclick="sam()">Please click it</button> <p id="demo"></p> <script> function sam() { var s = "Welcome To My Domain,Once again the user has welcomed"; var result = s.match(/in/g); document.getElementById("demo").innerHTML = result; } </script> </body> </html>
输出
例二
代码
<!DOCTYPE html> <html> <body> <p>Welcome To My Domain</p> <button onclick="first()">Please click it</button> <p id="demo"></p> <script> function first() { var s1 = "Welcome To My Domain, Once again the user has welcomed"; var result = s1.match(/in/gi); document.getElementById("demo").innerHTML = result; } </script> </body> </html>
输出
例三
代码
<!DOCTYPE html> <html> <body> <p>Welcome To My Domain</p> <p id="demo"></p> <FORM ID="first" NAME="first" METHOD=POST ACTION="javascript:void(0)"> <P>RegularExpression: <INPUT TYPE=TEXT NAME="n1" VALUE="\bt[a-z]+\b" SIZE=30></P> <P>User String is: <INPUT TYPE=TEXT NAME="n2" VALUE="The javascript regular Expression Object" SIZE=30></P> <P><INPUT TYPE=SUBMIT VALUE="Matched" ONCLICK="ex()"> <INPUT TYPE=SUBMIT VALUE="Value Matched" ONCLICK="ex2()"></P> <P>String Replaced: <INPUT TYPE=TEXT NAME="n3" VALUE="values replaced" SIZE=30></P> <P>The Given Output is: <INPUT TYPE=TEXT NAME="n4" VALUE="The final result is" SIZE=30></P> <P><INPUT TYPE=SUBMIT VALUE="value replaced" ONCLICK="ex3()"></P> </FORM> <script> function ex() { var r = new RegExp(document.first.n1.value); if (document.first.n2.value.match(r)) { alert("Values Successfully matched"); } else { alert("No matching values found"); } } function ex2() { var r = new RegExp(document.first.n1.value); var ma = r.exec(document.first.n2.value); if (ma == null) { alert("No matching values found"); } else { var s1 = "matching values found " + ma.index + ":\n"; for (i = 0; i < ma.length; i++) { s1 = s1 + ma[i] + "\n"; } alert(s1); } } function ex3() { var r = new RegExp(document.first.n3.value, "g"); document.first.n4.value = document.first.n2.value.replace(r, document.first.n3.value); } </script> </body> </html>
输出
结论
在 JavaScript 中,正则表达式也是将字符串从一个地方复制到另一个地方;正则表达式的字符串不包括全局值集(flags),所以str.match()方法找到并将返回与 RegExp.exec() 方法相同的结果。我们还可以使用RegExp.test()来识别字符串是否被匹配,而且它支持浏览器的兼容性。