Skip to content

元子字符

作者: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])

Contributors

Yuan Tang