
在JavaScript中使用正则表达式有两种方法. 构造正则表达式使用RegExp构造函数定义正则表达式对象. 具体的语句格式如下:
新RegExp(样式,属性);
参数模式是指定匹配模式或正则表达式对象的字符串. 参数属性是一个可选的装饰标志,包括“ g”,“ i”和“ m”三个选项,分别设置全局匹配,区分大小写匹配和多行匹配;如果参数模式是正则表达式对象,则必须省略此参数.
此函数返回一个新的RegExp对象,该对象包含指定的匹配模式和匹配标志. 示例1下面的示例使用RegExp构造函数定义一个简单的正则表达式. 匹配模式是字符“ a”,并且未设置第二个参数,因此此正则表达式只能匹配字符串中的第一个小写字母“ a”. ”,则后面的字母“ a”将不匹配.

var r = new RegExp("a"); //构造最简单的正则表达式
var s = "JavaScript != JAVA"; //定义字符串直接量
var a = s.match(r); //调用正则表达式执行匹配操作,返回匹配的数组
console.log(a); //返回数组["a"]
console.log(a.index); //返回值为1,匹配的下标位置
示例2如果要匹配字符串中的所有字母a,并且不区分大小写,则可以在第二个参数中设置g和i修饰符.
var r = new RegExp("a", "gi"); //设置匹配模式为全局匹配,且不区分大小写
var s = "JavaScript != JAVA"; //字符串直接量
var a = s.match(r); //匹配查找
console.log(a); //返回数组["a", "a", "A", "A"]
示例3在正则表达式中可以使用特殊字符. 以下正则表达式将匹配字符串“ JavaScript JAVA”中每个单词的首字母.

var r = new RegExp("\\b\\w", "gi"); //构造正则表达式对象
var s = "JavaScript JAVA"; //字符串直接量
var a = s.match(r); //匹配查找
console.log(A); //返回数组["j", "J"]
在上面的示例中,字符串“ \\ b \\ w”表示匹配模式,“ \ b”表示单词边界,“ \ w”表示任何ASCII字符,反斜杠表示转义序列. 为了避免对Regular()构造函数产生误解,必须将所有“ \”字符替换为“ \\”,并使用双反斜杠表示斜杠本身的含义.
在脚本中动态创建正则表达式时,使用构造函数RegExp()更方便. 例如,如果用户输入了检索到的字符串js正则表达式 使用,则必须使用RegExp()构造函数在运行时创建正则表达式,并且不能使用其他方法. 示例4如果RegExp()构造函数的第一个参数是正则表达式,则可以省略第二个参数. 此时,RegExp()构造函数将创建具有相同参数的正则表达式对象.
var r = new RegExp("\\b\\w", "gi"); //构造正则表达式
var r1 = new RegExp(r); //把正则表达式传递给RegExp()构造函数
var s = "JavaScript JAVA"; //字符串直接量
var a = s.match(r); //匹配查找
console.log(a); //返回数组["j", "J"]

正则表达式直接传递给RegExp()构造函数,可以对其进行类型封装. 示例5 RegExp()也可以用作普通函数,在这种情况下,使用new运算符调用构造函数的功能是相同的. 但是,如果函数的参数是正则表达式,则它仅返回正则表达式,而不再创建新的RegExp()对象.
var a = new RegExp("\\b\\w", "gi"); //构造正则表达式对象
var b = new RegExp(a); //对正则表达式对象进行再封装
var c = RegExp(a); //返回正则表达式直接量
console.log(a.constructor == RegExp); //返回true
console.log(b.constructor == RegExp); //返回true
console.log(c.constructor == RegExp); //返回true
正则表达式直接量使用双斜杠作为分隔符来定义正则表达式直接量. 双斜杠之间包含的字符是正则表达式字符模式. 字符模式不能使用引号,并且将符号字符放在斜杠后面的末尾. 语法如下:
/ pattern / attributes

示例6下面的示例定义一个正则表达式直接数量,然后调用它.
var r = /\b\w/gi; var s = "JavaScript JAVA"; var a = s,match(r); //直接调用正则表达式直接量 console.log(a); //返回数组["j", "J"]
在RegExp()构造函数和正则表达式直接语法中js正则表达式 使用,匹配模式的表达式不同. 对于RegExp()构造函数,它接收字符串而不是正则表达式匹配模式. 因此,在上面的示例中,RegExp()构造函数的第一个参数中的特殊字符必须用双反斜杠表示,以防止RegExp()构造函数对字符串中的字符进行转义. 同时,第二个参数中的修饰词也应用引号引起来. 在正则表达式的直接表达式中,每个字符都被定义为正则表达式,普通字符和特殊字符将被正确解释. 示例7可以在RegExp()构造函数中传递变量,但不允许在正则表达式直接量中使用.
var r = new RegExp("a" + s + "b", "g"); //动态创建正则表达式
var r = /"a" + s + "b"/g; //错误的用法
在上面的示例中,对于正则表达式直接量,“”和“ +”都将被视为用于匹配的普通字符,而不是用于串联操作的字符和变量的语法标识符.
JavaScript正则表达式支持“ g”,“ i”和“ m”三个标志修饰符,简要说明如下. 这三个修饰符指定匹配操作的范围,大小写和多行行为,并且关键字可以自由组合.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-246183-1.html