是否有正则表达式允许具有固定大小的单词的尾随空格?

时间:2015-02-19 15:11:03

标签: regex context-free-grammar

我们有一些用户输入的字段;到目前为止,我们验证此内容的规则是[A-Z][A-Z0-9]{0,7}。 含义:任何带有至少一个字符的大写字母;从一个角色开始;整个单词最多8个字符。

现在我被告知我们也应该接受“尾随”空格;但当然 - 只有尾随空格。更新;因为第一个答案是错误的:整个单词的最大长度仍然是8个字符!因为这正是导致我提出这个问题的重点。

我想这可以用TWO表达式检查:
a)[A-Z][A-Z0-9 ]{0,7} ...必须匹配输入和
b)[ ][A-Z0-9]必须与输入

不匹配

(第二个表达式只是找到任何“非尾随”空格)

但是还有一个可以用来检查这种情况的SINGLE正则表达式吗?

或者这是其中一个场合,好吧,虽然幸运 - 正则表达式只接受上下文无关语法?!

1 个答案:

答案 0 :(得分:5)

如果您只想允许尾随空格,请使用:

^[A-Z][A-Z0-9]{0,7} *$

或者:

^[A-Z][A-Z0-9]{0,7}\h*$

此处\h*是水平空格,仅在末尾匹配0或空格或制表符。


编辑:根据已修改的问题,您可以使用此基于前瞻性的正则表达式:

^(?=[A-Z0-9\h]{1,8}$)[A-Z][A-Z0-9]*\h*$

RegEx Demo