我试图从电话号码中删除所有非数字字符。
所以,假设我们有这种格式的数字:“(123) 456-7890”。
Regex.Replace(phone, @"[ -()]", string.Empty)
留下破折号。与 () 转义 ("\(\)") 相同。
这个
Regex.Replace(phone, @"[() -]", string.Empty)
虽然有效。
我认为 [] 中的字符顺序不起作用?事实上,如果我切换空间并四处冲刺,我会得到相同的结果。但是括号必须先起作用?
我试图从电话号码中删除所有非数字字符。
所以,假设我们有这种格式的数字:“(123) 456-7890”。
Regex.Replace(phone, @"[ -()]", string.Empty)
留下破折号。与 () 转义 ("\(\)") 相同。
这个
Regex.Replace(phone, @"[() -]", string.Empty)
虽然有效。
我认为 [] 中的字符顺序不起作用?事实上,如果我切换空间并四处冲刺,我会得到相同的结果。但是括号必须先起作用?
-可用于声明范围,例如[a-z]. 你需要逃避它:[ \-()].
例外情况是,如果您将破折号放在字符组的末尾,它的唯一含义可以是文字-。
连字符的位置很重要,因为连字符在字符类 ( []) 中用于表示范围,例如a-z. 因此,在末尾有连字符,正则表达式引擎知道您不打算在某个范围内使用破折号,因为它后面没有任何内容。见http://www.regular-expressions.info/charclass.html
-在此上下文中是一个特殊字符,表示一个范围(例如[a-zA-Z0-9])。当它出现在末尾时,它不能表示范围,因此可以正常工作。
正确的解决方案是用反斜杠转义它:\-.