正则表达式匹配字符串,而忽略特殊字符Javascript

时间:2018-08-01 09:46:23

标签: javascript regex

试图写一个包含某个字符串的正则表达式匹配字符串,同时忽略所有的“特殊字符”,例如(?/ @#%!^',等...

示例:

基本字符串:主页

与以下对象匹配:Ho'me或Home或Home!

与以下项不匹配:rHomer

到目前为止尝试过:

[a-zA-Z0-9](主页)

只是字母和数字以及我要匹配的字符串,当然这不起作用

3 个答案:

答案 0 :(得分:0)

假设[^a-zA-Z0-9]定义了“特殊字符”,则可以尝试以下模式:

[^a-zA-Z0-9]*H[^a-zA-Z0-9]*?o[^a-zA-Z0-9]*?m[^a-zA-Z0-9]*?e

答案 1 :(得分:0)

您可以替换所有非字母字符并比较字符串:

var base="Home";
var input="Ho'me?!";
console.log(base == input.replace(/[^A-Z]+/gi, ''));
// To support Unicode, requires ECMAScript 2018 support
console.log(base == input.replace(/\P{L}+/gu, ''));

[^A-Z]模式匹配ASCII字母以外的所有字符,\P{L}匹配Unicode字母以外的任何字符。

要仅检查字母,数字和空格,可以分别使用

 .replace(/[^A-Z0-9 ]+/gi, '')
 .replace(/[^\p{L}\p{N} ]+/gu, '')

答案 2 :(得分:0)

假设您只想匹配可能包含特殊字符的单词Home,则以下正则表达式将起作用:

^H{1}[ome!@#\$%\^&\*\(\)_\+\-=\[\]\{\}\;':"\\\|,\.<>\/?]+$

正则表达式解释:

  1. ^ H {1}:字符串应以H开头
  2. [ome!@#\ $%\ ^&*()_ +-= [] {} \;':“ \\ |,。<> /?] +:匹配o,m,e和所有特殊字符一次或多次。