我正在尝试编写一个javascript正则表达式,根据找到模式匹配最小和最大数量的单词:任意数量的字符后跟空格。这匹配一个单词后跟一个空格(例如:一个):
(^[a-zA-Z]+\s$)
当我添加范围量词{1,3}时,它不匹配模式的两次出现(例如:一两)。我需要更改为正则表达式以匹配此模式的最小值和最大值?
(^[a-zA-Z]+\s$){1,3}
非常感谢任何解释。
答案 0 :(得分:1)
答案 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}$