正则表达式允许空格,如果后跟字符

时间:2011-02-02 10:47:50

标签: asp.net regex

我有一个asp.net regularexpressionvalidator,我需要在文本框上匹配。如果有任何文本,逻辑上规则如下:

在修剪以删除空格后,文本必须至少为三个字符。 允许的字符是a-zA-Z0-9-'/ \&。

我正在努力构建一个表达式,只有在存在第四个非空格字符时才允许空格作为thrid字符。

有人可以建议表达吗?我的最后一次尝试是:

^[a-zA-Z0-9-'/\\&\.](([a-zA-Z0-9-'/\\&\.][a-zA-Z0-9-' /\\&\.])|([a-zA-Z0-9-' /\\&\.][a-zA-Z0-9-'/\\&\.]))[a-zA-Z0-9-' /\\&\.]{0,}$

但是在'a a'上不匹配。

感谢。

2 个答案:

答案 0 :(得分:3)

好的,现在这只是一个正则表达式:

^\s*(?=[a-zA-Z0-9'/\\&.-])([a-zA-Z0-9'/\\&.\s-]{3,})(?<=\S)\s*$

<强>解释

^                      # Start of string
\s*                    # Optional leading whitespace, don't capture that.
(?=                    # Assert that...
 [a-zA-Z0-9'/\\&.-]    # the next character is allowed and non-space
)
(                      # Match and capture...
 [a-zA-Z0-9'/\\&.\s-]{3,} # three or more allowed characters, including space
)
(?<=\S)                # Assert that the previous character is not a space
\s*                    # Optional trailing whitespace, don't capture that.
$                      # End of string

匹配

abc
aZ- &//
a  ab  abc   x
    aaa
a a

且不匹配

aa
abc!
     a&

答案 1 :(得分:0)

为了清晰起见,将允许的字符简化为a-z和空格,这不是吗?

^ *[a-z][a-z ]+[a-z] *$

忽略空格。现在一封信。然后是一些字母或空格。然后一封信。忽略更多空格。

完整的事情变成了:

^ *[a-zA-Z0-9-'/\\&\.][a-zA-Z0-9-'/\\&\. ]+[a-zA-Z0-9-'/\\&\.] *$