企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
预定义模式指的是某些常见模式的简写方式。 * `\d`匹配0-9之间的任一数字,相当于`[0-9]`。 * `\D`匹配所有0-9以外的字符,相当于`[^0-9]`。 * `\w`匹配任意的字母、数字和下划线,相当于`[A-Za-z0-9_]`。 * `\W`除所有字母、数字和下划线以外的字符,相当于`[^A-Za-z0-9_]`。 * `\s`匹配空格(包括换行符、制表符、空格符等),相等于`[ \t\r\n\v\f]`。 * `\S`匹配非空格的字符,相当于`[^ \t\r\n\v\f]`。 * `\b`匹配词的边界。 * `\B`匹配非词边界,即在词的内部。 下面是一些例子。 ~~~ // \s 的例子 /\s\w*/.exec('hello world') // [" world"] // \b 的例子 /\bworld/.test('hello world') // true /\bworld/.test('hello-world') // true /\bworld/.test('helloworld') // false // \B 的例子 /\Bworld/.test('hello-world') // false /\Bworld/.test('helloworld') // true ~~~ 上面代码中,`\s`表示空格,所以匹配结果会包括空格。`\b`表示词的边界,所以`world`的词首必须独立(词尾是否独立未指定),才会匹配。同理,`\B`表示非词的边界,只有`world`的词首不独立,才会匹配。 通常,正则表达式遇到换行符(`\n`)就会停止匹配。 ~~~ var html = "<b>Hello</b>\n<i>world!</i>"; /.*/.exec(html)[0] // "<b>Hello</b>" ~~~ 上面代码中,字符串`html`包含一个换行符,结果点字符(`.`)不匹配换行符,导致匹配结果可能不符合原意。这时使用`\s`字符类,就能包括换行符。 ~~~ var html = "<b>Hello</b>\n<i>world!</i>"; /[\S\s]*/.exec(html)[0] // "<b>Hello</b>\n<i>world!</i>" ~~~ 上面代码中,`[\S\s]`指代一切字符。