Regex 雷杰克斯:订单问题?
我试图从电话号码中去掉所有非数字字符 所以,假设我们有以下格式的数字:“(123)456-7890” 留下破折号。与转义的()相同(“\(\)”) 这个 不过,这很管用Regex 雷杰克斯:订单问题?,regex,Regex,我试图从电话号码中去掉所有非数字字符 所以,假设我们有以下格式的数字:“(123)456-7890” 留下破折号。与转义的()相同(“\(\)”) 这个 不过,这很管用 我认为[]中的字符顺序不起作用?事实上,如果我切换空间,四处乱跑,我也会得到同样的结果。。但括号必须先起作用?-在本上下文中是一个特殊字符,表示范围(例如[a-zA-Z0-9])。当它出现在末尾时,它不能表示范围,因此工作正常 正确的解决方案是用反斜杠将其转义:\--可用于声明范围,例如,[a-z]。您需要转义它:[\-()]
我认为[]中的字符顺序不起作用?事实上,如果我切换空间,四处乱跑,我也会得到同样的结果。。但括号必须先起作用?
-
在本上下文中是一个特殊字符,表示范围(例如[a-zA-Z0-9]
)。当它出现在末尾时,它不能表示范围,因此工作正常
正确的解决方案是用反斜杠将其转义:
\-
-
可用于声明范围,例如,[a-z]
。您需要转义它:[\-()]
例外情况是,如果将破折号放在字符组的末尾,其唯一含义可以是文字
-
连字符的位置很重要,因为连字符在字符类([]
)中用于表示范围,例如a-z
)。因此,对于末尾的连字符,正则表达式引擎知道您不打算在某个范围内使用破折号,因为后面没有任何内容。请参见使用非数字字符类-\DRegex.Replace(locationProperties.Phone,@“\D”,string.Empty)可以完全避免此问题
Duh。。我怀疑我忘了什么:)我会接受它作为一个答案尽快让我。
Regex.Replace(phone, @"[ -()]", string.Empty)
Regex.Replace(phone, @"[() -]", string.Empty)