跳转到内容

元子字符

刀刀
0字
0分钟
2026/8/16

元字符是正则表达式中的最小元素,只代表单一(一个)字符

元子字符字符列表

元字符说明示例
\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
let fn = 'daodao 2010'
console.log(fn.match(/\d/g)) //["2", "0", "1", "0"]

匹配所有电话号码

js
let fn = `
 张三:010-99999999,李四:020-88888888
`

let res = fn.match(/\d{3}-\d{7,8}/g)
console.log(res)

获取所有用户名

js
let fn = `
张三:010-99999999,李四:020-88888888`
let res = fn.match(/[^:\d-,]+/g)
console.log(res)

匹配任意非数字

js
console.log(/\D/.test(2029)) //false

匹配字母数字下划线

js
let fn = 'fndd@'
console.log(fn.match(/\w/g)) //["f", "n", "d", "d"]

匹配除了字母,数字或下划线外与任何字符匹配

js
console.log(/\W/.test('@')) //true

匹配与任意一个空白字符匹配

js
console.log(/\s/.test(' ')) //true
console.log(/\s/.test('\n')) //true

匹配除了空白符外任意一个字符匹配

js
let fn = 'fndd@'
console.log(fn.match(/\S/g)) //["f", "n", "d", "d", "@"]

如果要匹配点则需要转义

js
let fn = `daodao@com`
console.log(/daodao.com/i.test(fn)) //true
console.log(/daodao\.com/i.test(fn)) //false

使用 . 匹配除换行符外任意字符,下面匹配不到 fndd.com 因为有换行符

js
const url = `
  https://www.daodao.com
  fndd.com
`
console.log(url.match(/.+/)[0])

使用 /s 视为单行模式(忽略换行)时,. 可以匹配所有

js
let fn = `
  <span>
    daodao
    fndd
  </span>
`
console.log(fn.match(/<span>.*<\/span>/s)) // null
let res = fn.match(/<span>.*<\/span>/s)
console.log(res[0])

正则中空格会按普通字符对待

js
let tel = `010 - 999999`
console.log(/\d+-\d+/.test(tel)) //false
console.log(/\d+ - \d+/.test(tel)) //true

元子字符所有字符

可以使用 [\s\S][\d\D] 来匹配所有字符

js
let fn = `
  <span>
    daodao
    fndd
  </span>
`
let res = fn.match(/<span>[\s\S]+<\/span>/)
console.log(res[0])

贡献者

The avatar of contributor named as duyidao duyidao
The avatar of contributor named as 刀刀 刀刀

页面历史

刀刀博客累计访客 人;文档累计访问量共