javascript正则表达式

  • Post author:
  • Post category:java


基础篇

1.正则中的 开始和结束限制符号

1.

^表示匹配字符串的

开始

,$表示匹配字符串的

结束

var reg = /^this/; //只能匹配开始位置为this 的字符串。
var str = 'this is a test!';
var str1 = ' this is a test!';
console.log(reg.test(str));//true
console.log(reg.test(str1));//false
var reg = /this$/;//只能匹配结束位置为this的字符串。
var str3 = 'this is a test';//false
var str4 = 'this is a test this';//true




2.  ^和$

同时出现

在匹配模式的开始和结束位置时,只匹配他们之间的部分

var reg = /^this$/;//这个值能匹配 this 字符串  其他都不匹配!
var str1 = 'this is a test';
var str2 = 'this';
console.log(reg.test(str1));//false
console.log(reg.test(str2));//true
reg =/this/;//这种情况 只要字符串中有this 就匹配成功
str1 = 'this is a test';//true
str2 = 'is a test';//false
console.log(reg.test(str1));//true
console.log(reg.test(str2));//false





3

.


^不在开始位置而是在[]时意思是取反的意思 也就是不包含的意思,至于[]的讲解在后面会详细提到

var reg = /hello,[^w]/;
var str = 'hello,world';
console.log(reg.test(str));//false
var str1 ='hello,better';
console.log(reg.test(str1));//true

2.元字符(这里详细的可以参考w3c中对每个元字符详细的描述)

点击这里查看详情


注意:

这里不单单这些特殊符号表示的是元字符,单个的字母 数字 下划线等也是一个元字符

3.修饰符(这里按照我的理解称之为修饰符,意思就是对元字符起到修饰的作用)

常用修饰符包括 * + ? {n,m} {n}等 下面 一一进行详细说明
注意:

修饰符不能单独使用,要不然会出错,必须和元字符配合使用,也就是起到修饰的作用 ,如果把元字符比作 汉子中的名词,那么修饰符就相当于形容词,没有名词,形容词也就无用武之地了。
修饰符 前面元字符出现的次数
*
0次或更多次
+
至少1次
?
0次或者1次
{n,m}
最少n次,最大m次(n<=m)
{n}
n次

这样一来  * + ?  都可以用{n,m}的形式来表示了
*  等价于 {0,}
+ 等价于 {1,}
?等价于 {0,1}
*示例
var reg = /hello,w*d/;//w出现个数可以为0个可以为多个
var str = 'hello,mm';
var str1 = 'hello,d';
var str2 = 'hello,wd';
var str3 = 'hello,wwwwwd';
console.log(reg.test(str));//false
console.log(reg.test(str1));//true
console.log(reg.test(str2));//true
console.log(reg.test(str3));//true

+示例

var reg = /hello,w+d/;
var str = 'hello,mm';
var str1 = 'hello,d';
var str2 = 'hello,wd';
var str3 = 'hello,wwwwwd';
console.log(reg.test(str));//false
console.log(reg.test(str1));//false
console.log(reg.test(str2));//true
console.log(reg.test(str3));//true

?示例

var reg = /hello,w?d/;
var str = 'hello,mm';
var str1 = 'hello,d';
var str2 = 'hello,wd';
var str3 = 'hello,wwwwwd';
console.log(reg.test(str));//false
console.log(reg.test(str1));//true
console.log(reg.test(str2));//true
console.log(reg.test(str3));//false

{n,m}示例

var reg = /hello{2,5}d/; //匹配hello,o 出现的次数最少为2次,最多为5次  后面紧跟一个d
var str = 'sljfhellodsdf';
var str1 = 'sljfhelloodsdf'
var str2 = 'sljfhellooodsdf'
var str3 = 'sljfhelloooodsdf'
var str4 = 'sljfhellooooodsdf'
var str5 = 'sljfhelloooooodsdf'
console.log(reg.test(str));//false
console.log(reg.test(str1));//true
console.log(reg.test(str2));//true
console.log(reg.test(str3));//true
console.log(reg.test(str4));//true
console.log(reg.test(str5));//false

{n}示例

var reg = /hello{2}d/; //匹配hello,o 出现的次数只能为2次  后面紧跟一个d
var str = 'sljfhellodsdf';
var str1 = 'sljfhelloodsdf'
var str2 = 'sljfhellooodsdf'
var str3 = 'sljfhelloooodsdf'
var str4 = 'sljfhellooooodsdf'
var str5 = 'sljfhelloooooodsdf'
console.log(reg.test(str));//false
console.log(reg.test(str1));//true
console.log(reg.test(str2));//false
console.log(reg.test(str3));//false
console.log(reg.test(str4));//false
console.log(reg.test(str5));//false

4. [ ] 和 | 符号的详细说明

[] 匹配内部出现任意一个元字符
| 相当于或的意思
var reg = /hello,[a-z]+/;//匹配 hello, 后面是小写字母
var str = 'hello,world';
var str1 ='hello,World';
var str2 ='hello,better';
var str3 ='hello,Better';
console.log(reg.test(str));//true
console.log(reg.test(str1));//false
console.log(reg.test(str2));//true
console.log(reg.test(str3));//false

var reg = /hello,[world|better]/;//匹配 hello, 后面紧跟 world 或者 better
var str = 'hello,world';
var str1 ='hello,meinv';
var str2 ='hello,better';
var str3 ='hello,Better';
console.log(reg.test(str));//true
console.log(reg.test(str1));//false
console.log(reg.test(str2));//true
console.log(reg.test(str3));//false

注意:这里的 [a-z] 在前面没有讲解到   这里表示 所有的小写字母,你也可以[a-c] 表示 abc中的一个 只是一种简写而已 同理   [0-9]表示0到9中的其中一个数字  那要表示字母数字 下划线 该如何表示呢    [a-z0-9A-Z_]  是不是感觉很强大。

进阶篇



进阶篇会根据我遇到的情况慢慢进行补充和整理,本人整理不可能



版权声明:本文为wu595679200原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。