[英]How to create a regex that checks the string contains specific pattern in javascript?
我有一個需要遍歷字符串並首次出現特定模式的要求,如下所示,
i am a new **point**
在出現兩個連續字符時,必須返回true。
I must *not* be returned or*
上面的模式必須返回false。我試圖通過幾個鏈接創建正則表達式,但是string.match方法總是返回null。 我的代碼
var getFormat = function(event) { var element = document.getElementById('editor'); var startIndex = element.selectionStart; var selectedText = element.value.slice(startIndex); var regex = new RegExp(/(\\b(?:([*])(?!\\2{2}))+\\b)/) var stringMatch = selectedText.match(regex); console.log('stringMatch', stringMatch); }
<html> <body> <textarea onclick='getFormat(event);' rows='10' cols='10' id='editor'></textarea> </body> </html>
由於我是正則表達式的新手,所以我無法弄清楚哪里出了問題,有人可以幫我解決這個問題嗎?
在出現兩個連續字符時,必須返回true。
如果我對您的理解正確。 您只想檢查一個字符串是否包含兩個連續的字符,無論哪個字符。 然后,這樣做應該足夠了:
(.)\1
當然,這是假設它實際上是任何字符。 就像在兩個連續的空格中一樣,也是有效的匹配。
如果您只需要檢查彼此之間是否有兩顆星。 然后,您根本就不需要正則表達式。
s = "i am a new **point**";
if (s.indexOf("**") != -1)
// it's a match
如果是因為您需要兩顆星的開始和結束 。
begin = s.indexOf("**");
end = s.indexOf("**", begin + 1);
使用正則表達式可以做到這一點:
((.)\2)(.*?)\1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.