我正在製作一個打印系統,並且在某個特定時刻,我需要使用遞歸正則表達式來驗證輸入的onkeypress,以便只有匹配該正則表達式時才能接受它。但這是一個遞歸表達!用於驗證範圍的遞歸正則表達式
一些有效的數據:
[0]: "1-9"
[1]: "1"
[2]: "1-9,1"
[3]: "1,1-9,2,1-8"
這將是非常容易EBNF:
validation = (number) | (number, '-', number), ',', validation ;
number = digit, { digit } ;
digit = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 ;
但正則表達式不遵循同樣的方法,因爲EBNF一樣。我讀過遞歸正則表達式,但我仍然對它們感到困惑。我現在的非遞歸的嘗試,即驗證每個逗號分裂有效值的1/1:
/([0-9]*)|(([0-9]*)-([0-9]*))/g
這樣我可以單獨驗證每一個條目,但我想出一個辦法來驗證所有內容。
臨時的解決方案是:
pattern = /([0-9]*)|(([0-9]*)-([0-9]*))/g
fields = fieldValues.split(',')
而我創建包含真或假知道如果表達式匹配的陣列。我無法在正則表達式中完成所有工作,沒有JavaScript?
這個正則表達式根本不是遞歸的。 – Unihedron 2014-09-23 13:13:50
您的預期產出是多少? – ohaal 2014-09-23 13:14:03
輸出應該只是一個布爾值。 TRUE ||假。 – 2014-09-23 13:14:35