JavaScript正则(一)
1、字符组:
^ $ 说的是开始位置和结束位置,在JS中,既表示字符串的起始位置和结束位置,也表示行的起始位置和结束位置
console.log(/^\d$/.test('2')); // true 这里的 \d 代表的是数字 console.log(/^\d$/.test('a')); // false
[ ] 是一个字符集合,匹配他包含的任一个字符
console.log(/^[0123456]$/.test('0')); // true console.log(/^[0123456]$/.test('7')); // false console.log(/^[0123456]$/.test('12')); // false 在这里在[0123456]代表的是一个字符,所以来匹配 12 返回 false
{m,n} 代表重复的次数,这个也叫量词
console.log(/^\d{1,3}$/.test('123')); // true 在这是说可以出现 1 到 3 个数字 console.log(/^\d{1,3}$/.test('1')); // true console.log(/^\d{1,3}$/.test('1234')); // false
? + * 这些也叫量词
var res = /^<[^>/]([a-zA-Z]+)[^>/]>$/ console.log(res.test('<div>')); // true 这里这个正则匹配的是一个 html open tag,但是还有点问题不能匹配 <u> 这样的标签 console.log(res.test('<div/>')); // false
这里的 [^>/] 代表的是这个地方不能出现 > 和 / ,就是非的意思
- 代表的是一个范围 [a-zA-Z] 限制了标签名只能是大小写字母的组合
[a-zA-Z]+ 这里的 + 代表的是最少出现一次,出现次数没有上限
?代表了 可能出现也可能不出现,但是最多只能出现一次
var res = /^travell?er$/; console.log(res.test('traveller')); // true 这几个量词都是限制他们前一个字符 console.log(res.test('traveler')); // true
* 代表了 可能出现也可能不出现,出现次数没有上限
var res3 = /^\"[^\"]*\"$/ console.log(res3.test('\"some\"')); // true 这里在双引号前面的 \ 都是对 “ 的转义 console.log(res3.test('\"\"')); // true
环视:(?!……)和(?=……) (?<!……) 和(?<=……) 前面的那一对是否定顺序换和肯定顺序换,后面的一对是否定定循环和肯定逆循环
var res = /^<(?!\/)([^'">]+)(?<!\/)>$/ console.log(res.test('<div>')); // true console.log(res.test('</div>')); // false console.log(res.test('<div/>')); // false
<(?!\/) 的意思是在 < 的右侧不能出现 /,为了排除 close tag \/ 是对 / 进行转义
(?<!\/)> 的意思是在 > 的左侧不能出现 / 为了排除 close-selfing tag
var res = /^<(?!\/)([^'">]+)(?<=\/)>$/ console.log(res.test('<div>')); // false console.log(res.test('<div/>')); // true
(?<=\/)> 这把 ! 变成了= ,意思是在 > 的左侧是 / ,匹配的是html的 close tag
\s 代表的是空白符,可能是空格也可能是换行 \S 是\s 的补集
\d 代表的是数字,\D 是\d 的补集 \w 代表的是[-a-z0-9A-Z],\W 是\w 的补集
\s\S \d\D \w\W 他们可以代表所有的字符
| ,就是或的意思,(\s|\d)+ 代表了不是数字就是空白字符,最少要出现一次