2017-04-13 13 views
1

我嘗試了谷歌搜索,但無法找到我想要的。在正則表達式測試中嘗試了一些解決方法,但無濟於事。正則表達式冒號後無視方括號或角度支架

我想要冒號後面的值,但不包括方括號或尖括號。

所以含義根據下面的例子:

userId: user1 
userId: <user1> 
userId: <user 1> 
[userId: <user1>] 

我應該只得到價值user1

我想這正則表達式:userId:\s(.*?])但它會得到USER1後<>]

順便說一句,我使用Ruby正則表達式編輯器,如果它有任何幫助。

更新:需要使用具有間隔的詞語。

+0

如果用戶名可以有mor e比字符,使用'userId:\ s *([^ \]>] *)' –

+0

只是更多一點!它包括左尖括號。但我已經得到了答案。但非常感謝您的幫助! (: – JoeJoe

+0

你也與他們匹配,但你沒有在你的問題中提到過。 –

回答

0

你可以嘗試:

userId:\W*([\w ]+) 

Live demo

+0

這很有用,但我意識到我也有間隔的詞。所以需要匹配那也。對不起我的壞,只是包括在我的問題 – JoeJoe

+0

@JoeJoe看到更新 –

+0

它的工作!非常感謝! – JoeJoe

0

您可以使用/(:\s<?)(\w+\s?\d)/g再搭配第二組:

var myString = "[userId: <user1>]"; 
var myRegexp = /(:\s<?)(\w+\s?\d)/g; 
var match = myRegexp.exec(myString); 
console.log(match[2]); // user1 

注意"userId: <user 1>"返回"user 1"