Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式不';t仅验证一个字符_Javascript_Regex - Fatal编程技术网

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
无效,如何更改正则表达式?所以这些点之间一定有某种特征。嗯,你太棒了:)。谢谢