正则表达式
正则表达式由两种基本字符类型组成:
- 原义文本字符,如:a 就代表字母 a
- 元字符,在正则表达式中有特殊含义的非字母字符,如下:
. 任意字符
^ 开头
\d 数字
\b 字符边界
? 0个或者1个
+ 1个或者多个
* 任意个
{数字} 重复次数(或者说有“数字”个)
( ) 分组(group)
[ab] a或者b
$数字 匹配分组(group)
$ 结尾
\t 水平制表符
\v 垂直制表符
\n 换行符
\r 回车符
\0 (零) 空字符
\f 换页符
\cX Ctrl+X (由此可知\cZ等元字符的含义)
JavaScript通过内置对象RegExp支持正则表达式:http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp
有两种方法实例化RegExp:
1、字面量 var reg = /\bis\b/g ; 修饰符g代表gloab,全局匹配,不加g只会匹配第一个符合条件的字符串
2、构造函数 var reg = new RegExp( '\\bis\\b' , 'g' )
调用: 'this is a String'.relpace( reg , 'IS') ;
reg.test('this is a String') RegExp对象的test() 方法用于检测一个字符串是否匹配某个模式
修饰符:
g代表gloab,全局匹配,不加g只会匹配第一个符合条件的字符串
i代表ignore case忽略大小写,默认大小写敏感
m代表multiple lines多行搜索
PHP中使用PCRE库函数进行正则匹配:
preg_match属于PCRE库函数,用于执行一个正则匹配,常用来判断一类字符模式是否存在
PCRE库函数中,正则匹配模式使用分隔符与元字符组成,分隔符可以是非数字、非反斜线、非空格的任意字符。经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~),例如:
/foo bar/
#^[^0-9]$#
~php~
分隔符后面可以使用模式修饰符,模式修饰符(类似js的)包括:g,i, m, s, x等,例如使用i修饰符可以忽略大小写匹配:
正则表达式图形化网站:https://regexper.com/