2011-03-02 70 views

回答

2

的問題是,你不能在Javascript做負lookbehinds。


像這樣的東西應該工作:

var str = '[356] Hello World', 
    patt = /\[(\d+)\]/, 
    result = patt.exec(str)[1]; 

這將創建一個匹配組,並選擇與之相匹配的[1]

+0

是否有另一種方式來提取「356」 – faressoft 2011-03-02 18:11:10

+0

@faressoft見編輯。 – lonesomeday 2011-03-02 18:14:39

1

除了別人指出的內容外,您的搜索語法也有錯誤。

  • (?!regex)是一個負面的向前看,但你用它作爲積極lookbehead。
  • (?<!regex)是一個負面的向後看,但你用它作爲積極的向前看。

由於lookbehinds不在JS支持,泰國的和lonesomeday的答案是要走的路。在沒有支持他們的語言,你想要這樣的:

/(?<=\[)\d+(?=\])/ 
+0

出於好奇,爲什麼是泰國人而不是我的? – lonesomeday 2011-03-02 21:56:13

+0

@lonesomeday:你編輯了你的嗎?也許我第一次沒有正確閱讀。對於那個很抱歉。請參閱編輯。你的+1也是我自己。 – 2011-03-02 22:02:21

+0

這很奇怪 - 我以爲我看到你早些時候推薦我的回答,然後好像你已經編輯並刪除了它,我很好奇爲什麼!過於活躍的想象力。 – lonesomeday 2011-03-02 22:24:52