我有一個問題,我無法解決。我有包含井號標籤的字符串,例如'#question'或'#idea'。Javascript正則表達式匹配各種字符串
問題是如何提取hashtag?
var hashtag = str.match(/#question?#idea?/i);
這個正則表達式正確嗎?
我有一個問題,我無法解決。我有包含井號標籤的字符串,例如'#question'或'#idea'。Javascript正則表達式匹配各種字符串
問題是如何提取hashtag?
var hashtag = str.match(/#question?#idea?/i);
這個正則表達式正確嗎?
var str = "/foo=bar?#quesAion#dwdad";
var regi = new RegExp("(#[a-z0-9_-]*)", "gi");
var hashtag = str.match(regi);
Hashtag將是找到的字符串的數組,如果沒有找到,則返回null。
你的行的字符串
var hashtag = str.match(/#question?#idea?/i);
檢查是否含有文字#questio
,任選地接着n
,隨後#ide
,任選接着a
。如果是這種情況,hashtag[0]
將包含匹配的文本。這顯然不是你想要的。
試試這個:
// match a #, followed by either "question" or "idea"
var myregexp = /#(question|idea)\b/i;
var match = myregexp.exec(subject);
if (match != null) {
result = match[1]; // will contain "question" or "idea"
} else {
result = "";
}
的\b
在表達式的末尾是一個字邊界錨。它確保只有#question
而不是#questionnaire
將被匹配。
如果你不知道的主題標籤的名稱請先用
var myregexp = /#(\w+)/;
(這允許ASCII字母,數字和下劃線儘可能包括hashtag的人物 - 我不知道如果這些是唯一有效。人物如果沒有,你可以使用一個字符類。例如,允許破折號,也:。
var myregexp = /#([\w-]+)/;
沒有你的正則表達式是不正確的
/#question?#idea?/i
您可以按照此順序搜索正則表達式中的每個字符。 ?
使得字符在到達0或1次之前,我在最後使表達ignoreCase,即處理大小寫相同。你會發現:
#question#idea
#questio#ide
#questio#idea
#QUEStion#IDea
但不
#question
#idea
你有沒有一套固定的標籤,他們只能包含字母或數字也或其他字符?
你可以檢查你的正則表達式例如這裏在線My example