什麼是我的代碼問題如何使用正則表達式提取文本?
var str = "[356] Hello World";
var patt = new RegExp("(?!\[)\d+(?<!\])","");
var result = patt.exec(str);
結果應該是= 356
什麼是我的代碼問題如何使用正則表達式提取文本?
var str = "[356] Hello World";
var patt = new RegExp("(?!\[)\d+(?<!\])","");
var result = patt.exec(str);
結果應該是= 356
的問題是,你不能在Javascript做負lookbehinds。
像這樣的東西應該工作:
var str = '[356] Hello World',
patt = /\[(\d+)\]/,
result = patt.exec(str)[1];
這將創建一個匹配組,並選擇與之相匹配的[1]
。
Lookbehinds are not supported in JavaScript。
您可以嘗試使用捕獲子模式。
var str = "[356] Hello World";
var match = str.match(/\[(\d+)\]/);
var result = match ? match[1] : null;
除了別人指出的內容外,您的搜索語法也有錯誤。
(?!regex)
是一個負面的向前看,但你用它作爲積極lookbehead。(?<!regex)
是一個負面的向後看,但你用它作爲積極的向前看。由於lookbehinds不在JS支持,泰國的和lonesomeday的答案是要走的路。在沒有支持他們的語言,你想要這樣的:
/(?<=\[)\d+(?=\])/
出於好奇,爲什麼是泰國人而不是我的? – lonesomeday 2011-03-02 21:56:13
@lonesomeday:你編輯了你的嗎?也許我第一次沒有正確閱讀。對於那個很抱歉。請參閱編輯。你的+1也是我自己。 – 2011-03-02 22:02:21
這很奇怪 - 我以爲我看到你早些時候推薦我的回答,然後好像你已經編輯並刪除了它,我很好奇爲什麼!過於活躍的想象力。 – lonesomeday 2011-03-02 22:24:52
是否有另一種方式來提取「356」 – faressoft 2011-03-02 18:11:10
@faressoft見編輯。 – lonesomeday 2011-03-02 18:14:39