如何将这个PHP正则表达式转换为Javascript?

3
我尝试将这个转换为:
$regex = "/^[0-9]+[0-9\.]*(?<!\.)$/"

对于所有这些问题,都有不同的解决方案,但都不正确:

var regex = /^(?!\.$)[0-9]+[0-9\.]*/;
var regex = /^(?!.*\.$)[0-9]+[0-9\.]*/;
var regex = /^[0-9]+[0-9\.]*(?!\.$)/;

PHP正则表达式正确拒绝了1.1a1.,但Javascript的正则表达式却没有。

2
你试图在负向先行断言中耍聪明吗? - PP.
我正在尝试获取一个仅包含数字和点号且不能以点号结尾的字符串。 - Don Rhummy
1个回答

6
您的PHP正则表达式可以改写为以下方式,它匹配相同的语言但更易于阅读,并且不需要使用负向回溯:
$regex = "/^\d+(\.\d+)*$/"

这也很容易直接将其转换为Javascript正则表达式:

var regex = /^\d+(\.\d+)*$/;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接