我想匹配不是数字或字母(人们用来写单词)的任何特殊字符。我要包括下划线,因为下划线既不是数字也不是用于单词的字母。但是我不想包含空格。
简而言之,我想匹配下面的每个人,但最后两个除外。
12345_678
12345*678
12345-678
12345&678
12345-678
12345あ678
12345 678
我无法使用[^a-zA-Z0-9]
,因为它不包含非拉丁字母,例如日语。 \d+(\W|_)\d+
得到了多余的空间。最好的正则表达式是什么?
答案 0 :(得分:0)
使用以下内容也将忽略日语字母:
[^a-zA-Z\d\s-ゟ゠-ヿ一-龯]
答案 1 :(得分:0)
以下正则表达式将匹配任何既不是字母数字字符(包括日本或韩国使用的不同字母的字符)也不是空格的字符。
([^\w ]|_)
请注意,更改必须与下划线字符显式匹配,这是必需的,因为下划线是\ w字符类的一部分,因此,单独使用[^\w ]
不会匹配。 (还请注意,该模式在\ w之后具有空格字符)
如果不仅是简单的空格字符,而且还排除了其他任何空白字符(例如,制表符),那么下面经过稍微修改的模式可能更合适:
([^\w\s]|_)
答案 2 :(得分:0)
您可能想看看Unicode Character Categories。看来您需要匹配符号和标点。
credential.service.ts:6:3 - error TS2345: Argument of type '{ "name": string; }' is not assignable to parameter of type 'string | AesKeyAlgorithm | EcKeyImportParams | HmacImportParams | RsaHashedImportParams | DhImportKeyParams'.
Type '{ "name": string; }' is missing the following properties from type 'DhImportKeyParams': generator, prime
{"name": "PBKDF2"},
符号包括+,-,=,<,$,^,¦,§等
标点符号包括_,—,(,{,“,»,!,?,#,*等