元子字符
作者:Yuan Tang
更新于:5 个月前
字数统计:551 字
阅读时长:2 分钟
元字符是正则表达式中的最小元素,只代表单一(一个)字符
字符列表
元字符 | 说明 | 示例 |
---|---|---|
\d | 匹配任意一个数字 | [0-9] |
\D | 与除了数字以外的任何一个字符匹配 | [^0-9] |
\w | 与任意一个英文字母,数字或下划线匹配 | [a-zA-Z_] |
\W | 除了字母,数字或下划线外与任何字符匹配 | [^a-za-z_] |
\s | 任意一个空白字符匹配,如空格,制表符\t ,换行符\n | [\n\f\r\t\v] |
\S | 除了空白符外任意一个字符匹配 | [^\n\f\r\t\v] |
. | 匹配除换行符外的任意字符 |
使用体验
匹配任意数字
js
const fn = 'tydumpling 2010'
console.log(fn.match(/\d/g)) // ["2", "0", "1", "0"]
匹配所有电话号码
js
const fn = `
张三:010-99999999,李四:020-88888888
`
const res = fn.match(/\d{3}-\d{7,8}/g)
console.log(res)
获取所有用户名
js
const fn = `
张三:010-99999999,李四:020-88888888`
const res = fn.match(/[^:\d-,]+/g)
console.log(res)
匹配任意非数字
js
console.log(/\D/.test(2029)) // false
匹配字母数字下划线
js
const fn = 'fndd@'
console.log(fn.match(/\w/g)) // ["h", "d", "c", "m", "s"]
匹配除了字母,数字或下划线外与任何字符匹配
js
console.log(/\W/.test('@')) // true
匹配与任意一个空白字符匹配
js
console.log(/\s/.test(' ')) // true
console.log(/\s/.test('\n')) // true
匹配除了空白符外任意一个字符匹配
js
const fn = 'fndd@'
console.log(fn.match(/\S/g)) // ["2", "0", "1", "0","@"]
如果要匹配点则需要转义
js
const fn = 'tydumpling@com'
console.log(/tydumpling.com/i.test(fn)) // true
console.log(/tydumpling\.com/i.test(fn)) // false
使用.
匹配除换行符外任意字符,下面匹配不到fndd.com
因为有换行符
js
const url = `
https://www.tydumpling.com
fndd.com
`
console.log(url.match(/.+/)[0])
使用/s
视为单行模式(忽略换行)时,.
可以匹配所有
js
const fn = `
<span>
tydumpling
fndd
</span>
`
console.log(fn.match(/<span>.*<\/span>/s)) // null
const res = fn.match(/<span>.*<\/span>/s)
console.log(res[0])
正则中空格会按普通字符对待
js
const tel = '010 - 999999'
console.log(/\d+-\d+/.test(tel)) // false
console.log(/\d+ - \d+/.test(tel)) // true
所有字符
可以使用 [\s\S]
或 [\d\D]
来匹配所有字符
js
const fn = `
<span>
tydumpling
fndd
</span>
`
const res = fn.match(/<span>[\s\S]+<\/span>/)
console.log(res[0])