Javascript 正则表达式不';t仅验证一个字符
此正则表达式:Javascript 正则表达式不';t仅验证一个字符,javascript,regex,Javascript,Regex,此正则表达式: ^[\w\-]+([\.\w\s\-]+)*[^\s\.]$ …在验证以下字符串时效果良好: aaa.bbb.ccc a . b . d a_b.c a-b.c d.e 字符串应以一个或多个字符\w或减号开始,并且可以包含0-n点、\w或空格。结尾处不应有任何空格或点 唯一的问题是它不能识别只有一个字符是有效的。 但是,可以识别两个字符,例如aa,a,--,a 问:如何更改正则表达式以识别一个字母有效?您可以使用lookarounds来施加这些限制: ^(?=[\w-])(?
^[\w\-]+([\.\w\s\-]+)*[^\s\.]$
…在验证以下字符串时效果良好:
aaa.bbb.ccc
a . b . d
a_b.c
a-b.c d.e
字符串应以一个或多个字符\w
或减号开始,并且可以包含0-n点
、\w
或空格
。结尾处不应有任何空格
或点
唯一的问题是它不能识别只有一个字符是有效的。
但是,可以识别两个字符,例如aa
,a
,--
,a
问:如何更改正则表达式以识别一个字母有效?您可以使用lookarounds来施加这些限制:
^(?=[\w-])(?!.*[\s.]$)[.\w\s-]+$
^^^^^^^^^^^^^^^^^^^^
见
由于lookaheads(?!.[\s.]$)
和(?=[\w-])
不使用字符,因此[。\w\s-]+
子模式将只能匹配1个字符串
(?!.[\s.]$)
检查字符串(不带换行符,否则,将
替换为[\s\s]
)是否以空格或结尾
^
之后的(?=[\w-])
检查字符串是否以-
或单词字符开头(一次),若要更改正则表达式以识别一个字母为有效字母,请在末尾添加一个*
,如下所示
^[\w\-]+([\.\w\s\-]+)*[^\s\.]*$
[^\s\.]
,最后一部分没有任何+
或*
,您的正则表达式至少需要2个字符才能匹配
如果您将*
添加到它,它将匹配一个字符。我感觉这里有一个XY。您试图验证的格式是什么?如果您无法识别问题,如果删除中间部分:^[\w\-]+[^\s\.]$
,可能会帮助您识别问题。你说的是一个单词字符,然后是一个不是空格或点的东西,导致最小两个字符。这并不能解决问题,因为这样,例如,这个a.a.a.
将是有效的。但这不应该是因为它以一个
结尾。它接受结尾处带有
的字符串,因为]
和[^\s\.]*$
之间的*
。它使这个[^\s.]
成为可选的。是的,它可以工作!lookarounds
能否在java脚本中工作?JS ES5正则表达式引擎完全支持Lookaheads。还有一个问题:)。如果字符串a..a
无效,如何更改正则表达式?所以这些点之间一定有某种特征。嗯,你太棒了:)。谢谢