为字母数字正则表达式添加特殊字符

时间:2013-12-03 18:54:45

标签: c# .net regex

使用正则表达式的全新功能。我有一个目前只接受字母数字字符。我需要在正则表达式中添加以下特殊字符:

@ #$%*():;"',/? !+=-_ 

这是正则表达式:

RegularExpression(@"^[a-zA-Z\s.,0-9-]{1,30}$",

当我尝试添加特殊字符时,我改变了正则表达式:

RegularExpression(@"^[a-zA-Z\s.,0-9-@ #$%*():;"',/? !+=-_]{1,30}$"

但是,这会引发'字符Newline in constant开头的错误。

我已经绑定以逃避"'字符,但没有任何运气。

2 个答案:

答案 0 :(得分:5)

问题来自需要转义的双引号(""),而不是来自单引号。

@"^[a-zA-Z\s.,0-9@#$%*():;""'/?!+=_-]{1,30}$"

请注意-必须位于字符类的最后(或第一)位置,因为它具有特殊含义(定义范围)

答案 1 :(得分:0)

这些正则表达式相当于你的 两者都使用波浪号~作为分隔符 两者都在正则表达式字符串上使用双引号。

请注意,为了使类中的短划线-按字面解释而不是作为范围运算符,它必须存在于明确的位置或转义。 放置它的好地方是在有效范围之间(或在课程的开头或结尾) 例如[a-z - 0-9]是个好地方 编辑 - '-'文字可能必须转义或开始/结束课程。 (此案例适用于Perl / PCRE引擎)

这一个^[a-z-A-Z0-9_\s.,@#$%*():;"',/?!+=]{1,30}$是你的正则表达式,没有重复的字符。

为了使其更具可读性,注意包含单词class,可以将其简化为
^[\w-\s.,@#$%*():;"',/?!+=]{1,30}$

编辑 - 删除了Php测试用例。