所以我想限制一个包含可选公寓号的文本框。
这是正在使用的正则表达式:
([0-9]{1,4}[A-Z]?)|([A-Z])|(^$)
够简单呃?
我正在使用这些工具来测试我的正则表达式:
Regex Analyzer
Regex Validator
以下是预期结果:
显然如果我在这里,正则表达式会接受无效的那些。这个正则表达式的目标是接受带有可选字母的1到4个数字,或者单个字母或空字符串。
我似乎无法弄清楚什么不起作用,我的意思是它是一个简单的正则表达式,我们在这里。我可能错过了一些东西,因为我对正则表达式不是很好,但这种语法对我的眼睛来说似乎没问题。希望有人可以指出我的错误。
感谢所有人的帮助,非常感谢。
答案 0 :(得分:3)
您还需要使用^
和$
锚点作为前两个选项。您还可以将第二个选项包含在第一个选项中(它也会立即匹配第三个变体):
^[0-9]{0,4}[A-Z]?$
如果没有锚点,则正则表达式会匹配,因为它只会从字符串中的任何位置选择一个字母。
答案 1 :(得分:1)
根据语言的不同,您也可以使用负面的预测。
^[0-9]{0,4}[A-Za-z](?!.*[0-9])
故障:
^[0-9]{0,4} = This look for any number 0 through 4 times at the beginning of the string
[A-Za-z] = This look for any characters (Both cases)
(?!.*[0-9]) = This will only allow the letters if there are no numbers anywhere after the letter.
我还没有弄清楚如何验证null字符,但使用您使用的任何语言的工具可能更容易。这个逻辑的一些东西:
if String Doesn't equal $null Then check the Rexex
沿着这些方向的东西,只是根据你的语言进行调整。
我使用RegEx Skinner来验证答案。
编辑:修复了评论中的错误