2015-05-01 54 views
0

我有一個正則表達式這樣它提取2個字符之間與在這種情況下的的Javascript正則表達式逸出

(?<=\#)(.*?)(?=\#) 

其#2之間的內容和UM如下

var extract = str.match(/(?<=\#)(.*?)(?=\#)/).pop(); 

使用它但因爲我想我需要逃避它正則表達式給出了錯誤。如何正確運用轉義字符爲上述正則表達式?

+2

JavaScript不支持'(?<=)' – vks

+0

如何可能我在JavaScript中使用呢?因爲正則表達式是普遍的? – Kalanamith

回答

1
#(.*?)# 

#([^#]+)# 

只需使用這一點,搶group 1。看到演示。

https://regex101.com/r/uE3cC4/14

var re = /#(.*?)#/gm; 
var str = 'bazbarfoo#asad#'; 
var m; 

while ((m = re.exec(str)) !== null) { 
if (m.index === re.lastIndex) { 
re.lastIndex++; 
} 
// View your result using the m-variable. 
// eg m[0] etc. 
} 
2

正則表達式可能是矯枉過正了這個任務。

var result = str.split("#")[1] || ""; 
  • 如果字符串中沒有#,結果是空字符串。
  • 如果只有一個#字符串中,結果是之後的一切。
  • 如果在字符串中的兩個或更多#,結果是第一和第二#之間的子字符串。