是否可以輸出導致與正則表達式不匹配的字符串(其索引)中的第一個字符?僅僅使用正則表達式匹配操作是可能的還是必須使用更復雜的東西?輸出導致與正則表達式不匹配的第一個字符
例如,在JavaScript中,我可能有一個正則表達式/^\d{3}\s\d{2}$/
,該字符串與3位數字後跟空格和另一個2位數字匹配。我有一個字符串"123a45"
我應用這個正則表達式。由於正則表達式不匹配,因此執行此操作(例如,"123a45".match(/^\d{3}\s\d{2}$/)
)將返回null
。我怎樣才能得到導致這種不匹配的第一個字符(在這種情況下,"a"
,索引爲3的字符)?
這樣做的一個用例可能是直接指向用戶根據用於驗證的正則表達式導致用戶輸入的字符串無效的字符。
廣義問題很可能不可行(一個例子是使用OR'|'的正則表達式,因爲有2種可能的情況,您不知道哪個字符實際上導致了問題)。對於某些特定的問題,在某種程度上可能是可能的。 – nhahtdh 2012-07-21 20:02:54
難道你不知道當匹配失敗時用'|'表示哪個部分? – 2012-07-21 20:17:40
例如:'([A-Z] [0-9] {2} | [0-9] {2} [A-Z])'並輸入'090',你會報告哪個字符?第一個「0」還是最後一個「0」?正如所指出的那樣,匹配失敗是因爲它不符合'OR'指定的所有情況,並且原因可能會有所不同。 – nhahtdh 2012-07-21 20:20:55