试图写一个包含某个字符串的正则表达式匹配字符串,同时忽略所有的“特殊字符”,例如(?/ @#%!^',等...
示例:
基本字符串:主页
与以下对象匹配:Ho'me或Home或Home!
与以下项不匹配:rHomer
到目前为止尝试过:
[a-zA-Z0-9](主页)
只是字母和数字以及我要匹配的字符串,当然这不起作用
答案 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!@#\$%\^&\*\(\)_\+\-=\[\]\{\}\;':"\\\|,\.<>\/?]+$
正则表达式解释: