Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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 JS Regex-string可以以句点开始/结束,但它不应在一行中包含多个句点_Javascript_Regex - Fatal编程技术网

Javascript JS Regex-string可以以句点开始/结束,但它不应在一行中包含多个句点

Javascript JS Regex-string可以以句点开始/结束,但它不应在一行中包含多个句点,javascript,regex,Javascript,Regex,我正在验证字符串,它可以包含任何字符,可以以句点开始/结束,但不应在一行中包含多个句点。我将如何实现这一点 有效字符串: {.tr.i.\u g 无效字符串: {.tr..i.\u g .tr…i.g 到目前为止,我得到的是: ^.*.[^\.\.]*.$您可以将此正则表达式与负loikahead一起使用: /^(?!.*\.\.).+/gm 正则表达式详细信息: ^:开始 (?!.\.\.\):如果在任何地方都有两个点,则反向前瞻将使匹配失败 +:匹配任意字符的1+ 此/^[^.

我正在验证字符串,它可以包含任何字符,可以以句点开始/结束,但不应在一行中包含多个句点。我将如何实现这一点

有效字符串:

  • {.tr.i.\u g
无效字符串:

  • {.tr..i.\u g
  • .tr…i.g
到目前为止,我得到的是:


^.*.[^\.\.]*.$

您可以将此正则表达式与负loikahead一起使用:

/^(?!.*\.\.).+/gm

正则表达式详细信息:

  • ^
    :开始
  • (?!.\.\.\)
    :如果在任何地方都有两个点,则反向前瞻将使匹配失败
  • +
    :匹配任意字符的1+

/^[^.]*(?:\(?!\)[^.]*)*$/
如果它必须至少包含一个字符,则:

/^(?!.*?\.\.).+$/s

^             # Matches start of string
(?!.*?\.\.)   # Negative lookahead assertion that the input does not contain two successive periods
.+            # Matches one or more characters
$             # Matches the end of the string
s
标志是必需的,否则
将与换行符不匹配。因此,如果字符串为“abc\n..d”,则需要使用
s
标志来查找两个连续的句点

如果不想使用
s
标志,请使用与任何字符匹配的
[\s\s]

/^(?![\s\S]*?\.\.)[\s\S]+$/

再次您好,Dot boy。您确定不能只对该字符串执行否定验证吗?我的意思是检查是否找到了
。如果字符串是
“abc\n..d”
,即在两个句点之前的任何位置都有一个换行符?然后将
替换为
[^]
。您最好询问OP这是否是要求。从问题中可以看出,一行中没有
\n
。OP说“我正在验证字符串,它可以包含任何字符…”。我不举两三个例子,因为“任何字符”如果你只看这些例子的话,你会需要无数的例子。为什么我要问?我的答案会起作用,无论它是否是一个要求。现在问题是你的答案。我没有复制你的答案。没有太多的方法可以做到这一点。重点是我认为你的答案是错误的,因为新行的问题。我现在提出作为
s
模式的替代。如果输入是
“ab.c..d”
,该怎么办?您不能使用
[^.]*
,因为在进入两个连续的时段之前,可能会有一个中间时段。
[^.]
表示没有点。只有允许的点被选中,没有相邻(正向)点。