JavaScript正则表达式验证输入,如2.4 ** 6-0

时间:2017-03-30 18:48:55

标签: javascript regex

我正在尝试验证一行输入。它应该是一个或多个整数。整数可以用一个句号或一个或多个星号分隔。 0无效,但-0是。句号结尾处的句号无效,但是一个或多个星号。所以" 2.4 * -2.-0 **"是有效的。

我尝试过使用:

/^(?:(?:-0)|(?:-?[1-9]\d*)\.|\*+)*(?:(?:-0)|(?:-?[1-9]\d*))\**$/.test(myline)

但是这会拒绝包含句号和星号的输入。

我随后使用以下方法成功解析了字符串的所有组件:

var regEx = new RegExp("((?:-0)|(?:-?[1-9]\\d*))(\\.|\\*+|$)", "g"), result;
while((result = regEx.exec(myline)) !== null)

我可以在while循环的每次传递中连接result[0]result[1]的值,最后将其与原始字符串进行比较。我只是希望在开始之前进行一次测试,然后才能进入所有逻辑循环。

1 个答案:

答案 0 :(得分:0)

答案可能是测试无效的事物而不是完全有效的字符串,例如:

if (/(?:[^-.*0-9])|(?:^[.*0])|(?:\d-)|(?:\.[.*])|(?:\*\.)|(?:[.*]-?0\d)|(?:[-.]$)|(?:-00)|(?:-[^0-9])|(?:[.*]0)|^$/.test(mydata))

我已经通过这个运行了一套全面的测试用例,但没有发现任何问题。