我正在尝试验证一行输入。它应该是一个或多个整数。整数可以用一个句号或一个或多个星号分隔。 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]
的值,最后将其与原始字符串进行比较。我只是希望在开始之前进行一次测试,然后才能进入所有逻辑循环。
答案 0 :(得分:0)
答案可能是测试无效的事物而不是完全有效的字符串,例如:
if (/(?:[^-.*0-9])|(?:^[.*0])|(?:\d-)|(?:\.[.*])|(?:\*\.)|(?:[.*]-?0\d)|(?:[-.]$)|(?:-00)|(?:-[^0-9])|(?:[.*]0)|^$/.test(mydata))
我已经通过这个运行了一套全面的测试用例,但没有发现任何问题。