我建立这应该接受字符串只与下列格式的应用程序:JS正则表达式只允许数字,分号和连字符
- 12345(仅一个数字)
- 12345; 23456(两个或两个以上由分隔的数字;)
- 12345-12367(一系列由分隔的数字 - )
的Java脚本的正则表达式应仅允许上述格式&不应接受任何其他格式或符号。任何人都可以想出一个正则表达式吗?
我建立这应该接受字符串只与下列格式的应用程序:JS正则表达式只允许数字,分号和连字符
的Java脚本的正则表达式应仅允许上述格式&不应接受任何其他格式或符号。任何人都可以想出一个正则表达式吗?
这是你所需要的正则表达式:/^\d+((;\d+)*|-\d+)?$/
(;\d+)*
将检查分隔多个号码“;”
-\d+
将检查范围
如果是字符类中的第一个或最后一个字符,我猜不需要跳过连字符。 – 2012-07-31 14:06:32
做了一个编辑,我逃过了一切,我不知道:) – micnic 2012-07-31 14:09:41
同样在这里'=]'只是评论,因为一些人更喜欢代码“更清洁”(少不必要的转义)。 – 2012-07-31 14:10:44
尝试
^[0-9]+([;-][0-9]+)?$
这应该工作
[0-9]+
匹配1个或多个数字 [; - ]匹配;
或-
(...)?
是一个可选匹配
^
锚开始和$
锚绳
添加锚'^ $'... – 2012-07-31 14:06:31
啊谢谢,我只是这样做;) – 2012-07-31 14:07:40
假设你正在寻找数部分的结束是每次5个位数,下面应该匹配你想要什么。
[0-9]{5}((;|-)[0-9]{5}){0,1}
如果需要不同的长度,则可以更新{5}与任一另一固定长度或诸如{3,5}的范围为3至5的数字串。如果你希望能够与speperators上市捕捉到超过两个号码,可以用
[0-9]{5}((;|-)[0-9]{5})*
^[0-9 - ] {0,50} $
0- 9只接受数字
- ;只允许 - 和;
{0,50}只允许50个字符
您不能使用正则表达式来保证最后一个是有效范围。 – 2012-07-31 14:03:15
如果你使用分号作为字段之间的分隔符,也许你应该'拆分'字符串并检查每个元素是否与其他两个条件匹配。 – 2012-07-31 14:03:20
前两个很简单:'/ ^(\ d +)(; \ d +)?$ /' – 2012-07-31 14:04:16