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”
,该怎么办?您不能使用[^.]*
,因为在进入两个连续的时段之前,可能会有一个中间时段。[^.]
表示没有点。只有允许的点被选中,没有相邻(正向)点。