所有非字母数字符号的正则表达式

Kev*_*vin 27 c# regex

我正在尝试为其中至少包含1个非字母数字符号的字符串创建正则表达式

我试图使用的代码是

Regex symbolPattern = new Regex("?[!@#$%^&*()_-+=[{]};:<>|./?.]");
Run Code Online (Sandbox Code Playgroud)

我试图只匹配其中一个,!@#$%^&*()_-+=[{]};:<>|./?.但它似乎没有工作.

Jar*_*Par 77

如果您想匹配非字母数字符号,请使用\W|_.

Regex pattern = new Regex(@"\W|_");
Run Code Online (Sandbox Code Playgroud)

这将匹配除0-9和az之外的任何内容.有关\W角色类的信息以及此处提供的其他信息.

  • @just某人:我回滚你的转速.@JaredPar做了相应的修复.有时候人们会犯错字等等.这是一个简单的错误.他修好了.我会怀疑他知道匹配所有单词字符和所有非单词字符之间的区别:D (3认同)
  • 不要挑战一位大师,但你不是说'\ W`?`\ w`(小写w)匹配所有单词字符. (2认同)
  • @Alan,是的,完全是\ W.不知何故错过了帽子.谢谢! (2认同)
  • 我想过,一旦你达到100k代表,你就会升入神性和诸如此类的东西.:) (2认同)

Cha*_*ion 10

如果需要,您还可以避免使用正则表达式:

return s.Any(c => !char.IsLetterOrDigit(c))
Run Code Online (Sandbox Code Playgroud)

  • `ToCharArray`将复制字符串的字符并且是不必要的.为了获得更好的性能,只需查询字符串本身:`return s.Any(c =>!char.IsLetterOrDigit(c));` (2认同)