
[英]Regex match letters and numbers, except if there are three consecutive (any) letters
[英]regex match numbers with potential letters
我需要搭配JS:
例如:
23
4545a
1B
554 cs
34-S
正则表达式不是我的强项,所以我所拥有的只是这个...
^[0-9A-Za-z ]+$
更新:
^(0-9A-Za-z )+$
也许有些冗长,但可以说明我认为的必要部分
[0-9]+[\s-]{0,1}[a-zA-Z]{0,2}
等同于:
此正则表达式匹配您的每个测试方案。
亚伦,我的是其他答案的混合体。 :)
/^\\d+[ -]?[az]{0,2}$/i
\\d+
= 1个或更多数字 [ -]?
=可选的空格字符(注意:仅空格,而不是“ whitespace”)或破折号 [az]{0,2}
= 1或2个字母字符(请注意:此刻仅小写,但请继续阅读。。。) i
使其不区分大小写,因此[az]
将匹配大写或小写字母 编辑 -好的,所以我在所有答案中都发现了一个错误。 大声笑因为字母模式的末尾允许使用0个字符,并且空格和破折号是可选的,所以到目前为止,我们提供的正则表达式会导致以下测试数据的误报: 123-
和456 <--- with a space at the end
第二个可以通过在值上使用$.trim()
来解决(如果您尝试测试的值允许),但是第一个不可以。
这样。 。 。 这使我们进入了一个新的正则表达式来处理这些情况:
/^\d+([ -]?[a-z]{1,2})?$/i
\\d+
= 1个或更多数字 [ -]?
=可选的空格字符(注意:仅空格,而不是“ whitespace”)或破折号 [az]{1,2}
=必须包含1或2个字母字符(注意:此刻仅小写,但请继续阅读。。。) ( . . . )?
最后两个模式周围的数字强制空格或破折号仅在数字之后有效( 如果它们在数字之后),然后是1或2个字母。 。 。 但是,整个组作为一个整体是可选的。 i
使其不区分大小写,因此[az]
将匹配大写或小写字母 他们更新的正则表达式与所有示例匹配,并且在我提到的两个无效案例中也失败了。
注意:如果数字后面紧跟一个空格应被认为是有效的,则在测试之前修整该值也将允许该情况通过。
会做吗?
^[0-9]+( |-)?[A-Za-z]{0,2}$
(^[0-9]+( |-){0,1}[a-zA-Z]{0,2})
您可以在http://gskinner.com/RegExr/中进行测试,这是测试和了解RegEx的非常有用的工具
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.