Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 要匹配“.”的正则表达式,但不在“上午”中`_Javascript_Regex - Fatal编程技术网

Javascript 要匹配“.”的正则表达式,但不在“上午”中`

Javascript 要匹配“.”的正则表达式,但不在“上午”中`,javascript,regex,Javascript,Regex,我需要一个正则表达式来匹配字符串中的所有点,但如果它是a.m.或p.m.的一部分,则不需要 现在。是下午5点,而且已经很晚了… 我需要它在JS环境中工作 是的,我正在劈开一根绳子 str=`Now。是下午5点而且已经很晚了…`; 结果=str.split(/[.]/); 我得到了 [“现在”、“现在”、“下午5点”、“下午5点”、“而且要迟到了”、、、、][code] 而我需要 [“现在”、“现在”、“下午5点而且要迟到了”、、、、、]这样做: string.match(/(?:\b[ap]\

我需要一个正则表达式来匹配字符串中的所有点,但如果它是
a.m.
p.m.
的一部分,则不需要

现在。是下午5点,而且已经很晚了…

我需要它在JS环境中工作

是的,我正在劈开一根绳子

str=`Now。是下午5点而且已经很晚了…`;
结果=str.split(/[.]/);
我得到了
[“现在”、“现在”、“下午5点”、“下午5点”、“而且要迟到了”、、、、][code]

而我需要
[“现在”、“现在”、“下午5点而且要迟到了”、、、、、]

这样做:

string.match(/(?:\b[ap]\.m\b\.?|\d+:\d+|[^.:])+|(?<=\.)(?=\.|(?<=\.\.)$)/gi)

string.match(/(?:\b[ap]\.m\b\.?\d+:\d+[^.:])+(?您可以将以下基于查找的正则表达式解决方案用于
拆分

/\.(?<!\b[pa]\.(?:m\.)?)/i

那么,您正在拆分一个字符串,是吗?您当前的表达式是什么?您使用的方法是什么?添加了澄清您可以尝试使用基于lookback的正则表达式,如
/\。(?编写正匹配正则表达式比编写负匹配正则表达式更容易。用占位符替换a.m和p.m可能更容易,进行拆分,然后反向替换。复杂正则表达式的一个警告是,它可以在各种dos攻击中对您使用。下一次,请在注释中添加
@
+用户名,以便用户我会收到你的反馈。我无意中注意到你的问题被编辑了。谢谢。看起来令人费解,不过…@avalanche1你期望什么?我从来没有期望过任何东西。这样我就不会失望,只会得到惊喜;))这看起来很优雅。但是为什么第二个点是可选的呢?@avalanche1第二个点不是可选的。整个
m.
模式是可选的,因为必须对
a.
/
p.
m.
中的点进行检查。你能用外行术语解释一下什么是
负向后看
吗?我想把你的名字加上@但它不会让我,我死后会把它抹掉post@avalanche1负lookback是一种零宽度断言,如果lookback模式与当前位置左侧的文本位置立即匹配,则匹配将失败。您不需要在此处使用
@
+名称,因为您撰写评论的帖子的作者总是会收到通知e评论。
/\.(?<!\b[pa]\.(?:m\.)?)/i