Javascript正则表达式量词

时间:2016-05-20 16:06:17

标签: javascript regex

我正在尝试编写一个javascript正则表达式,根据找到模式匹配最小和最大数量的单词:任意数量的字符后跟空格。这匹配一个单词后跟一个空格(例如:一个):

    (^[a-zA-Z]+\s$)

Debuggex Demo

当我添加范围量词{1,3}时,它不匹配模式的两次出现(例如:一两)。我需要更改为正则表达式以匹配此模式的最小值和最大值?

    (^[a-zA-Z]+\s$){1,3}

Debuggex Demo

非常感谢任何解释。

3 个答案:

答案 0 :(得分:1)

从量化组中取出^$,因为您无法在一行中多次匹配字符串的开头和结尾。

^([a-zA-Z]+\s){1,3}$

DEMO

答案 1 :(得分:1)

(^[a-zA-Z]+\s$)将从行^的开头开始扫描,扫描单词[a-zA-Z]+,扫描空格\s,并期望行结束$

当你有两个单词时,它找不到行的结尾,所以它失败了。如果您取出$,第二个单词将失败,因为它不是该行的开头。

因此起始线和终点线必须绕过极限扫描。

使其更通用:

(\S+\s*){1,3}

\S+:至少一个非空格

\s*:任意数量的空白

即使字符串末尾没有空格,也可以扫描单词。如果你想强制整行,那么你可以将^放在前面,$放在最后:

^(\S+\s*){1,3}$

答案 2 :(得分:1)

以下内容与指定完全相同:

Error Executing Database Query.  
** ERROR ** (7501) Name defined by CREATE TEMPORARY TABLE already exists.  

^([a-zA-Z]+ ){1,3}$ 替换空格以匹配任何单个空白字符:

\s

将量词添加到^([a-zA-Z]+\s){1,3}$ 以设置可接受的空白字符数。以下内容允许添加\s

中的一个或多个
+

如果末尾的空格是可选的,那么以下内容将起作用:

^([a-zA-Z]+\s+){1,3}$