2014-01-22 14 views
0

我想要做一個正則表達式,將比較一個代碼,可能會開始與SE但不必。實例:正則表達式可能會與SE開始

XXXXX

XXXXX

XXX XX

SEXXXXX

SEXXXXX

SEXXX XX

SE XXXXX

SE XXX-XX

SE XXX XX

我至今是:/ ^(發E?)(\ S +)(\ d {3})(\ S | - ? )(\ d {2})$/I;

但問題是它可以只有s或只有e開始。有什麼建議麼?

回答

1

s?e?部分將檢查se

嘗試以下操作來代替:

/^(?:se)? ?\d{3}[- ]?\d{2}$/i 
+0

這很好:)謝謝 – MaGi

0

我會寫 /^(SE \ s){0,1}(\ d {3})(\ S | - )(\ d {2})$ /我

0

方式如果我理解你的要求,你看起來很好。 s?e?部分將允許它開始SE只有S只有E,這聽起來像你想要的。但是,除非您試圖將代碼的不同部分分爲捕獲組,否則不需要大多數括號。此外,這看起來不正確:(\s|-?)我認爲它仍然會工作,如果沒有\s-那裏,但它是一個尷尬的寫作方式。

我認爲這應該很好地工作:

/^s?e?\s?\d{3}[\s-]?\d{2}$/i 

如果你不希望它開始只有S,只有E,或空格,然後使用此:

/^(se\s?)?\d{3}[\s-]?\d{2}$/i 
+0

問題是不是括號,這是(視力說)發E?檢查兩個,這是行不通的。 – MaGi

+0

@MaGi - 我不知道你是否只允許S /只有E.如果你不這樣做,第二種模式就是你所需要的。問題絕對不是括號,這只是偶然的建議。 –