javascript正则表达式 详细入门教程( 二 )


5.量词--代表匹配多少个
let re = /\d+/gm; //要提取数字的正则表达式let testStr = "sad213jkls456poi412poippsd987a1";//\d 后面的 '+' 就是一个量词,他代表匹配至少一个let arr = testStr.match(/\d+/g);console.log(arr)
值得注意的是可以使用 {n,m}来表示最少匹配和最多匹配
{n,m}最少匹配n次和最多匹配m次
{n}, 表示匹配n次.
{n,} 只写了n,并且留 了', ',不写m ,则表示至少匹配n次,不限制最多匹配
更多元字符和量词可以参考菜鸟教程 - > 点我查看
6.范围匹配
[asdf] 匹配asdf中任意一个
[0-9] 匹配0-9数字
[a-z] 匹配小写字母a到小写字符z中任意一个字母
[A-Z]匹配大写字母A到大写字符Z中任意一个字母
[A-z]匹配任意一个字母,不区分大小写
[\u4e00-\u9fa5] 匹配中文
let testStr = "abcsadarcadcjlsjja2coqweycyaRc";//匹配axc 模式的字符串,x为字母let re = /a[A-z]c/g;console.log(testStr.match(re),"字母")// ["abc", "arc", "adc", "aRc"] "字母"let re2 = /a[0-9]c/g; //匹配axc 模式的字符串,x为数字console.log(testStr.match(re2),"数字") //["a2c"] "数字"
let testStr = "ad啊萨达sduiow萨达-sd我我 萨达apoi";let re = /[\u4e00-\u9fa5]/g; //匹配单个中文console.log(testStr.match(re)) //["啊", "萨", "达", "萨", "达", "我", "我", "萨", "达"]let re2 = /[\u4e00-\u9fa5]+/g; //匹配多个中文console.log(testStr.match(re2)) //["啊萨达", "萨达", "我我", "萨达"]
接下来做一个组合练习
//组合练习 let testStr = "adsas22jl98dkkkja213jklsd9qwe9t9yt9xz98xcz4xzc23";//提取数字加字母组合的数组,要求字母至少一个,数字只能有一个let re = /[A-z]+\d{1}/g;console.log(testStr.match(re));//["adsas2", "jl9", "dkkkja2", "jklsd9", "qwe9", "t9", "yt9", "xz9", "xcz4", "xzc2"]
{1} 可以省略,因为\d默认只会匹配一次
7.分组
使用()对正则表达式进行分组,每一个()为子组
每一个子组都是一个正则表达式
通过分组,可以改变量词的影响范围
/[a-z]\d+/ 和 /([a-z]\d)+/ 匹配的就不同
let testStr = "a12jsdj2j1s4du2u1y24osf9lo90msad90xc0";//找到 1个字母加一个数字组合的数组let re = /([A-z]\d)+/g; //量词只能影响前面一个匹配模式或者前面一个分组--'()'的内容console.log(testStr.match(re),"分组")//["a1", "j2j1s4", "u2u1y2", "f9", "o9", "d9", "c0"] "分组"
8.位置限制
^ : 匹配字符串开始位置的字符
$: 匹配字符串结束位置的字符
//位置限制let testStr = "123adsad7986adsla290";let re = /^\d+/g; //匹配开始位置的多个数字console.log(testStr.match(re)); //["123"]let re2 = /\d+$/g; //匹配结束位置的多个数字console.log(testStr.match(re2)); //["290"]
9.修饰符
g: 匹配所有符合规则的字符串
i: 忽略大小写
m: 匹配多行 (需要配合 ^ 或者 $ 使用才容易看出区别)
举个栗子:
以下是html 内容和js内容