簡體   English   中英

JavaScript正則表達式以驗證輸入,例如2.4 ** 6-0

[英]JavaScript regular expression to validate input such as 2.4**6-0

我正在嘗試驗證輸入行。 它應該是一個或多個整數。 整數可以用一個句號或一個或多個星號分隔。 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]的值,最后將其與原始字符串進行比較。 我只是希望一開始就進行一次測試,然后再進入具有所有邏輯的循環。

答案可能是測試無效的東西,而不是完全有效的字符串,例如:

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

我已經通過它運行了一套全面的測試用例,但沒有發現任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM