我有一个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'上不匹配。
感谢。
答案 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-'/\\&\.] *$