2015-09-24 68 views
1

我有一個字符串是這樣的:的Javascript正則表達式中的所有字符截至字

blah-ha-ID: 
asdf 

我想要的所有字符匹配,直到最後-ID:

所以我最初的正則表達式是:

^[^-]+ 

這個工作,直到開始有詞在他們的字。所以在上面的例子中,blah-ha-ID:它應該選擇到blah當它應該有blah-ha

所以我想這樣的事情,我想再說一遍,不-ID

^[^-ID]+ 

當然,但是這不會工作的所有字符。我不能使用捕獲,我需要它來排除最終-ID

更多的解決方法我希望學習如何做到這一點,我記得有一種方法可以重複,直到這些字符中的「單詞」類。

+2

你不需要Regexp,而是使用String的'lastIndexOf'代替 – hindmost

+0

謝謝@hindmost,但我需要在一個簡單的替換中使用它。不用捕獲和使用函數替換。 – Noitidart

+0

您仍然可以使用'lastIndexOf'來替換。 'substr' /'substring'會有所幫助。 – hindmost

回答

1

你可以使用這個表達式:

/^(.+?)(?=-ID|$)/ 

這會從開始1個或多個字符字面-ID或行結束匹配。 -ID處於積極向前的狀態,所以它不會被匹配。

RegEx Demo

+0

感謝Anubhava,但我需要它不在末端選擇-ID :(我不能使用capuring :( – Noitidart

+0

感謝您的編輯它適用於我的情況,但有可能做我的gorup的事情嗎?我希望能儘可能地學習它 – Noitidart

+0

有一些技巧,例如'[^ - [^ I [^ D]]]]'但是隻要stack允許我接受你的解決方案 – Noitidart

1

這適用於所有test cases

這裏,我本身添加的-ID:退化情況一行。

+0

謝謝你這麼有趣 – Noitidart

相關問題