我正在尝试在ASP.NET网站上使用Validator,并且需要查找“街道地址”文本框是否包含有效条目。
包含长于X个字符的单词(在这种情况下为25,没有标点符号或空格)的条目将导致打印的A4页面上的HTML无法正确包装,因此无法正确地将某些尺寸限制为正确地推动边距
对于街道地址,我希望匹配“201 Long Road”有效但“235 ReallyLongAndNarrowWindingDoadBesideTheRiver Street”无效。
使用Microsoft .Net Regular Expression Validator我需要知道RegEx模式可能是什么。
我认为如果找到匹配,Validator将正确触发,但是如果没有匹配,Validator将不会触发,并且Update按钮(在这种情况下)将不会触发。
由于街道地址可以包含大写字母和数字等,因此它需要适应它,空格,逗号,半冒号和冒号以及连字符也是有效字符。
任何帮助都会非常感激,因为我真的遇到了这个问题。
谢谢, 大卫
答案 0 :(得分:1)
您可以使用以下内容。
"^\w{0,25}(?>\W+\w{1,25})*\W*$"
以0-25个字符开头。然后我们有一个至少一个非单词的重复组,然后是1-25个单词。最后,我们最后可以有0个或更多的非单词。 ?>是我未经考验的尝试,以消除exponential backtracking。
答案 1 :(得分:1)
使用否定断言:
(?!.*\S{25})
\S{25}
匹配25 \S
的序列(必须是更长时间的子序列)。 (?!pattern)
是一个负向前瞻,如果模式不匹配则为真。 .*
允许前瞻尽可能看起来。
因此整个模式是
^(?!.*\S{25}).*$
这匹配所有不包含\S{25}
(see it in action on rubular.com, with threshold 10)的字符串。