![](/img/trans.png)
[英]regex for match out of two characters where @ is the only character or preceded by a whitespace
[英]Struggling with regex to match only two of a character, not three
我需要在Javascript正則表達式的字符串中匹配所有出現的//
它不能匹配 /// 或 /
到目前為止,我有(.*[^\/])\/{2}([^\/].*)
這基本上是“不是/的東西,然后是//,然后是不是/的東西”
除了我要匹配的字符串以//開頭時,該方法似乎還有效
這不起作用:
//例子
這確實
東西 // 例子
我該如何解決這個問題?
編輯:更多的上下文 - 我試圖用!替換//,所以我正在使用:
result = result.replace(myRegex, "$1 ! $2");
替換兩個斜杠,它們要么開始字符串,要么不跟在斜杠后面,后面跟任何不是斜杠或字符串結尾的斜杠。
s=s.replace(/(^|[^/])\/{2}([^/]|$)/g,'$1!$2');
用這個:
/([^/]*)(\/{2})([^/]*)/g
例如
alert("///exam//ple".replace(/([^/]*)(\/{2})([^/]*)/g, "$1$3"));
編輯:根據評論更新了表達式。
/[/]{2}/
例如:
alert("//example".replace(/[/]{2}/, ""));
例如,它看起來也不起作用example//
。
問題是因為您匹配//
前后至少有一個非斜杠字符。 這可以通過錨定正則表達式來解決,然后您可以將前面/后面的文本設為可選:
^(.*[^\/])?\/{2}([^\/].*)?$
使用否定的前瞻/后瞻斷言:
(.*)(?<!/)//(?!/)(.*)
這是一個窮人的非正則表達式方法:
例如,假設您想刪除“..”的所有實例而不影響“...”的出現。
var cleansedText = $(this).text().toString()
.replaceAll("...", "☰☸☧")
.replaceAll("..", "")
.replaceAll("☰☸☧", "...")
;
$(this).text(cleansedText();
對於較長的字符串,可能不如正則表達式快,但對於短字符串來說效果很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.