正则表达式中有两种字符:git
1.元字符.表达式中的特殊字符github
字符 | 含义 |
---|---|
t | 水平制表符 |
v | 垂直制表符 |
n | 换行符 |
r | 回车符 |
0 | 空字符 |
f | 换页符 |
cX | 与X对应的控制字符符(Ctrl+X) |
。。。 | 。。。 |
2.原意文本字符.普通字符,表明本来的意思正则表达式
若是在字符类中要将每一种状况都列入晓得太麻烦,对于数字和字母可使用范围类简写,例如:数组
正则表达式还提供了一些预约义类,来对复杂范围类进行归纳函数
字符 | 等价 | 含义 |
---|---|---|
. | 2 | 除了回车和换行符外的全部字符 |
d | [0-9] | 数字字符 |
D | 3 | 非数字字符 |
s | [tnx0Bfr] | 空白符 |
S | 4 | 非空白符 |
w | [a-zA-Z_0-9] | 单词字符(数字,字母,下划线) |
W | 5 | 非单词字符 |
字符 | 含义 |
---|---|
^ | 以xxx开始 |
$ | 以xxx结束 |
b | 单词边界 |
B | 非单词边界 |
量词变数所匹配的字符串重复次数this
字符 | 含义 |
---|---|
? | 出现零次或一次(最多一次) |
+ | 出现一次或屡次(至少一次) |
* | 出现零次或屡次(任意次) |
{n} | 出现n次 |
{n,m} | 出现n到m次 |
{n,} | 至少出现n次 |
\d{3,6} //尽量多匹配,但最多为6次
\d{3,6}? //尽量少匹配,但至少为3次
使用“()”将匹配规则划分红几个组spa
//"yes"连续出现3次 (yes){3} //或:|,能够匹配yes or no或yes and no yes\b(or|and)\bno //反向应用 '2017-11-1'.replace(/(\d{4})-(\d{2})-(\d{0,2})/,'$3/$2/$1') 输出:1/11/2017 三个“()”将正则表示时分为三组,每组能够用$n来表示,n即在表达式中出现的次序。该表达式中的三组分别匹配到"2017"、"11"、"1",该函数将匹配到的字符串用第二个参数替换。$3/$2/$1==>2017/11/1
前瞻即将匹配到的字符串再向前观察是否也符合所定义的规则,例如校验数字前是否带有“¥”,咱们可使用这个正则表达式:code
\d{0,}(?=¥)
名称 | 规则 | 含义 |
---|---|---|
正向前瞻 | exp(?=assert) | |
反向前瞻 | exp(?!assert) | |
正向后顾 | exp(?<=assert) | JavaScript不支持 |
反向后顾 | exp(?<=!assert) | JavaScript不支持 |
简而言之,正则表达式就是对比校验字符串是否符合某种规则。regexp
RegExp做为JavaScript的内置对象表示JavaScript对正则表达式有着原生的支持。对象
1.使用构造函数 var reg = new RegExp('\\bimjianjian\\b','g'); 2.字面量方式 var reg = /\bimjianjian\b/g
以上两种方式都能建立js正则表达式对象,都是校验字符串中是否含有 imjianjian 这个单词,b表示单词边界。且两种方式中都使用了修饰符,构造函数用第二个参数来传入,而字面量则直接写在表达式后。修饰符一共以下三种:
test() 方法检索字符串中的指定值。返回值是 true 或 false。
/\bam\b/.test('i am jianjian') //true /\bam\b/.test('he is jianjian') //false
exec() 方法检索字符串中的指定值。返回值是被找到的值。若是没有发现匹配,则返回 null。
若是须要找到全部某个字符的全部存在,在找到第一个匹配的字符后,将存储其位置。若是再次运行 exec(),则从存储的位置开始检索,并找到下一个匹配字符,并存储其位置。
var str = "this is jianjian"; var reg = new RegExp("is","g"); var result; while ((result = reg.exec(str)) != null) { console.log(result); console.log(reg.lastIndex); }
compile() 既能够改变检索模式,也能够添加或删除第二个参数。即更改匹配规则。
reg=/man/g; reg2=/(wo)?man/g; reg.compile(reg2,'i');//将匹配规则改成reg2,且大小写不敏感
检索与正则表达式相匹配的值。返回第一个与 regexp 相匹配的子串的起始位置。若是没有找到任何匹配的子串,则返回 -1。search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,而且老是从字符串的开始进行检索,这意味着它老是返回 stringObject 的第一个匹配的位置。
找到一个或多个正则表达式的匹配。返回存放匹配结果的数组。该数组的内容依赖于 regexp 是否具备全局标志 g。
替换与正则表达式匹配的子串。返回一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或全部匹配以后获得的。
按照匹配到的字符做为切割点。返回切割后的数组。