2011-01-08 61 views
0

我正在使用php和mysql。我有一個下拉框,我在問數據類型的MySQL字段。現在,我想把它的JavaScript驗證。我很困惑與枚舉數據類型。我正在使用正則表達式/^[']{1}[^',^\\]+[']{1}$/。這是枚舉值的單個值。它工作正常,但問題是當我把單引號或反斜槓與反斜槓,它是有效的,但這個正則表達式顯示爲無效。javascript中的正則表達式mysql的enum數據類型

例如,'a'b'無效但'a \'b'有效。

+5

你可以寫'['] {1}`的` 「`。 – Gumbo 2011-01-08 09:38:54

+0

你的意思是用`['] {1}`替換`[^',^ \\] +`? – himadri 2011-01-08 09:43:22

+0

不,用``替換`['] {1}``。它們是等價的。 – marcog 2011-01-08 09:58:26

回答

0
^'([^',^\\](\\.)?)+'$ 

[^',^\\]匹配任何東西,但字符',^\。接下來,我們匹配一個可選的\.,它匹配任何轉義字符(包括\.\\)。我們匹配這一對的一個或多個序列,從而匹配字符串中任何地方的\',但不需要它。

請注意,在您的正則表達式中,[']{1}表示匹配一個'字符。這相當於文字'

0

這應該工作:/^'(\\.|[^',^\\]+)+'$/
但是,我想補充的空白脫穎而出,並進行驗證後(可以與捕獲組被剝去)/^\s*('(\\.|[^',^\\]+)+')\s*$/