2014-10-31 35 views
0

我有這樣的正則表達式:什麼是這個PHP正則表達式邊界集的等效JavaScript正則表達式?

(?<=Employee\s)([a-zA-Z ]+?)(?=\s?that) 

在兩個詞之間的每一個名稱相匹配(Employeethat

live demo

但這是php寫的,我需要的JavaScrpit「味道」

如果刪除了「違規的」代碼:

(Employee\s)([a-zA-Z ]+?)(?=\s?that) 

live demo

然後正則表達式也包括僱員。如何編寫正則表達式來排除Employee字,並且只包含Employeethat之間的字,就像第一個php正則表達式中一樣。

+0

一個選項是讓'Employee'不捕獲('?:')(或者根本沒有組),並提取第一組('match(...)[1]')。 – georg 2014-10-31 11:27:51

+0

@georg有沒有組的方法? – 2014-10-31 11:53:48

+1

不,這將是後視,遺憾的是在JS正則表達式中丟失了。爲什麼必須是正則表達式,爲什麼你不能使用組? – 2014-10-31 11:54:33

回答

1

?:是一個非捕獲組,所以只是把那個正則表達式的你的員工部分之前:

(?:Employee\s)([a-zA-Z ]+?)(?=\s?that) 

這裏有一個demo測試。


你也可以把它拿出來完全捕獲組:

Employee\s([a-zA-Z ]+?)(?=\s?that) 

下面是這個版本demo

+0

仍然包括選擇中的僱員 – 2014-10-31 11:45:37

+0

@EduardFlorinescu更新了另一個選項 – Joe 2014-10-31 11:51:39

+0

@EduardFlorinescu你是什麼意思的「選擇」?你如何調用這個正則表達式,你對結果做了什麼?爲了利用捕獲組,並忽略不屬於捕獲組的組成部分,您需要以某種方式調用它。 – 2014-10-31 11:53:53