匹配非字母的任何特殊字符(包括下划线,但不包括空格)

时间:2019-03-28 17:27:05

标签: c# regex

我想匹配不是数字或字母(人们用来写单词)的任何特殊字符。我要包括下划线,因为下划线既不是数字也不是用于单词的字母。但是我不想包含空格。

简而言之,我想匹配下面的每个人,但最后两个除外。

12345_678
12345*678
12345-678
12345&678
12345-678
12345あ678
12345 678

我无法使用[^a-zA-Z0-9],因为它不包含非拉丁字母,例如日语。 \d+(\W|_)\d+得到了多余的空间。最好的正则表达式是什么?

3 个答案:

答案 0 :(得分:0)

使用以下内容也将忽略日语字母:

[^a-zA-Z\d\s぀-ゟ゠-ヿ一-龯]

答案 1 :(得分:0)

以下正则表达式将匹配任何既不是字母数字字符(包括日本或韩国使用的不同字母的字符)也不是空格的字符。

([^\w ]|_)

请注意,更改必须与下划线字符显式匹配,这是必需的,因为下划线是\ w字符类的一部分,因此,单独使用[^\w ]不会匹配。 (还请注意,该模式在\ w之后具有空格字符)

如果不仅是简单的空格字符,而且还排除了其他任何空白字符(例如,制表符),那么下面经过稍微修改的模式可能更合适:

([^\w\s]|_)


See here for an example of the latter pattern in action on regexstorm.net, including Hiragana and Hangul characters

答案 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"},

符号包括+,-,=,<,$,^,¦,§等

标点符号包括_,—,(,{,“,»,!,?,#,*等