我想验证一个文本框只接受字母数字和"\"
字符,像这样:Testing123\
将返回true
。 下面是我到目前为止已经试过:C#无法理解正则表达式
"^[a-zA-Z0-9]*?$"
上述表达式可以接受的字母数字,没有哪个做工精细的字母数量的限制。
如果没有记错的话,"\"
表现为转义字符,所以我尝试了下面的表达,但它抛出unterminated expression
例外:
"^[a-zA-Z0-9\\]*?$"
我想验证一个文本框只接受字母数字和"\"
字符,像这样:Testing123\
将返回true
。 下面是我到目前为止已经试过:C#无法理解正则表达式
"^[a-zA-Z0-9]*?$"
上述表达式可以接受的字母数字,没有哪个做工精细的字母数量的限制。
如果没有记错的话,"\"
表现为转义字符,所以我尝试了下面的表达,但它抛出unterminated expression
例外:
"^[a-zA-Z0-9\\]*?$"
你将不得不双逃避反斜杠字符,因为你真正需要发送反斜杠到正则表达式语法分析程序:
string example1 = "^[a-zA-Z0-9\\\\]*?$"; //two backslash characters assigned to the string
逸出的第一级是编译器,以及用于正则表达式的第二电平 - 的反斜杠是一个转义字符,无论是在C#和正则表达式(即,像\n
更有意义的C#编译器之类的东西\s
更有意义的正则表达式解析器)
或者你可以使用@
文字标记:
string example2 = @"^[a-zA-Z0-9\\]*?$" //same here but the @ symbol saves us the headache
为什么你看到“未终止的表达”是正则表达式解析器看到^[a-zA-Z0-9\]*?$
- 也就是开始的行标志后跟包含大写字母,小写字母,数字字符类,字符]
,*
,?
,$
,其中从未关闭,因为没有右括号。
放多了一个反斜杠在你的正则表达式如下所示:
"^[a-zA-Z0-9\\\\]*?$"
这是另外两个,你的答案是由lc给出的。无论如何,谢谢你:) –
这是两个更多的编译器视角:) – SpiderCode
纠正我,如果我错了,如果现在的情况下改变''而不是\,那么正确的表达是'? “^ [a-zA-Z0-9 \\\?] *?$”'而不是? –
是和不是:a)你不需要'/?',因为它不是一个转义序列,编译器对'?'没有特殊的含义,所以我们只需要''^ [a -ZA-Z0-9 \\?] *?$“'。 b)实际上你不需要在字符类中跳过'?',所以向Regex引擎发送一个反斜杠是多余的,你可以简单地使用'“^ [a-zA-Z0-9?] *?$“' –