【发布时间】:2013-07-07 08:00:35
【问题描述】:
我正在尝试编写一个字符串“清理”函数,它只允许使用字母数字字符,以及一些其他字符,例如下划线、句点和减号(破折号)字符。
目前我们的函数使用源字符串的直接字符迭代,但我正在尝试将其转换为正则表达式,因为从我一直在阅读的内容来看,它更干净,性能更高(这对我来说似乎倒退了迭代,但我无法分析它,直到我得到一个有效的正则表达式。)
对我来说,这个问题有两个方面。一、我知道下面的正则表达式...
[a-zA-Z0-9]
...匹配一系列字母数字字符,但我如何还包括下划线、句点和减号?您是否只是用“\”字符转义它们并将它们与其余部分放在括号之间?
其次,对于不属于匹配项的任何字符(即其他标点符号,例如“?”),我们希望将其替换为下划线。
我的想法是匹配一系列所需的字符,我们匹配一个不在所需范围内的字符,然后替换它。我认为正则表达式是将克拉作为括号之间的第一个字符,如下所示...
[^a-zA-Z0-9]
这是正确的方法吗?
【问题讨论】:
-
Regex.Replace() 方法是你所需要的
-
我想通了,但请看我的问题,或者说上面有两个与此相关的问题。
-
您想反转您的角色类别。 IE。
[^a-zA-Z0-9],它将匹配所有非字母数字。