[英]Regular expression to find a mention
我正在尋找一個Javascript中的正則表達式,在一個字符串中匹配
@Mr. Smith Hello !
,史密斯先生是用戶的名字,發生的事件
Mr.
Mr. Smith
Mr. Smith Hello
Mr. Smith Hello !
現在,我嘗試過的每個正則表達式都返回了
@Mr. Smith Hello !
Mr. Smith Hello !
,
而忽視Mr.
, Mr. Smith
與Mr. Smith Hello
...
我試過這個:
/^@(.*) /
/^@(.*)* /
和/^@([^ ].*) /
謝謝你的幫助 !
單個正則表達式不能將重疊文本作為單獨的匹配返回,因為每個匹配都會占用輸入文本的一部分。 但是,您可以創建嵌套捕獲組,如下所示(演示: http : //www.rubular.com/r/bsu52a1eL9 ):
@(((([^ ]*) [^ ]*) [^ ]*) [^ ]*)
當然,這只適用於您提供的精確字符串格式,正好有3個空格/ 4個單獨的單詞。 更好的解決方案是使用substring
和split
方法,然后您可以手動重新組合部件:
var input = "@Mr. Smith Hello !";
var parts = input.substring(1).split(' ');
//parts = ["Mr.","Smith","Hello","!"]
var temp = "";
var output = [];
for (var i = 0; i < parts.length; i++)
{
if (temp != "") temp += " ";
temp += parts[i];
output[i] = temp;
}
//output = ["Mr.", "Mr. Smith", "Mr. Smith Hello", "Mr. Smith Hello !"]
演示: http : //jsfiddle.net/jbk4h/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.