簡體   English   中英

正則表達找到提及

[英]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. SmithMr. Smith Hello ...

我試過這個:

/^@(.*) / /^@(.*)* //^@([^ ].*) /

謝謝你的幫助 !

單個正則表達式不能將重疊文本作為單獨的匹配返回,因為每個匹配都會占用輸入文本的一部分。 但是,您可以創建嵌套捕獲組,如下所示(演示: http//www.rubular.com/r/bsu52a1eL9 ):

@(((([^ ]*) [^ ]*) [^ ]*) [^ ]*)

當然,這只適用於您提供的精確字符串格式,正好有3個空格/ 4個單獨的單詞。 更好的解決方案是使用substringsplit方法,然后您可以手動重新組合部件:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM