正则表达式 修饰符

修饰符也称为标记,正则表达式的标记用于指定额外的匹配策略。

标记不写在正则表达式里,标记位于表达式之外,格式如下:

/pattern/flags

下表列出了正则表达式常用的修饰符:

修饰符含义描述
iignore - 不区分大小写将匹配设置为不区分大小写,搜索时不区分大小写: A 和 a 没有区别。
gglobal - 全局匹配 查找所有的匹配项。
mmulti line - 多行匹配使边界字符 ^$ 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。
s特殊字符圆点 . 中包含换行符 \n默认情况下的圆点 . 是 匹配除换行符 \n 之外的任何字符,加上 s 修饰符之后, . 中包含换行符 \n。

 

1. g 修饰符

g 修饰符可以查找字符串中所有的匹配项:

在字符串中查找 "codebaoku":

var str="Google codebaoku taobao codebaoku"; 
var n1=str.match(/codebaoku/);   // 查找第一次匹配项
var n2=str.match(/codebaoku/g);  // 查找所有匹配项

运行结果:

n1: codebaoku
n2: codebaoku,codebaoku

 

2. i 修饰符

i 修饰符为不区分大小写匹配,实例如下:

在字符串中查找 "codebaoku":

var str="Google codebaoku taobao CODEbaoku"; 
var n1=str.match(/codebaoku/g);   // 区分大小写
var n2=str.match(/codebaoku/gi);  // 不区分大小写

运行结果:

n1: codebaoku
n2: codebaoku,CODEbaoku

 

3. m 修饰符

m 修饰符可以使 ^$ 匹配一段文本中每行的开始和结束位置。

g 只匹配第一行,添加 m 之后实现多行。

以下实例字符串中使用 \n 来换行:

在字符串中查找 "codebaoku":

var str="codebaokugoogle\ntaobao\ncodebaokuweibo";
var n1=str.match(/^codebaoku/g);   // 匹配一个
var n2=str.match(/^codebaoku/gm);  // 多行匹配

运行结果:

n1: codebaoku
n2: codebaoku,codebaoku

 

4. s 修饰符

默认情况下的圆点 . 是匹配除换行符 \n 之外的任何字符,加上 s 之后, . 中包含换行符 \n

s 修饰符实例如下:

在字符串中查找 "codebaoku":

var str="google\ncodebaoku\ntaobao";
var n1=str.match(/google./);   // 没有使用 s,无法匹配\n
var n2=str.match(/codebaoku./s);  // 使用 s,匹配\n

运行结果:

n1: 
n2: runoob

下表包含了元字符的完整列表以及它们在正则表达式上下文中的行为:\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。