[英]Regex to select text without white spaces with restrictions
我需要 select % 符號之間的一些文本,其中 2% 之間沒有空格。
這應該匹配:
%link%
這不應該:
%my link%
這個簡單的正則表達式可以解決問題:
/%\S*%/g
但是有一個問題:我可以添加一個前綴: % 和一個后綴: % 但正則表達式必須在它們之間包含: (.+?) (它是第三方腳本)。
所以這是我需要調整的正則表達式:
/%(.+?)%/
因為“(。+?)”我需要一個解決方法,知道嗎?
更新:所有這些對於完美的正則表達式都是正確的:
regex = /%(.+?)%/g // default regex which allows spaces so it's not good
regex.test('%link%')
regex.test('%my link%') === false
regex.toString().includes('(.+?)')
您可以使用
var some_hardcoded_value = ".+?";
var regex = new RegExp("%(?=[^\\s%]+%)" + some_hardcoded_value + "%", "g");
請參閱正則表達式演示。
詳情:
%
- 一個%
字符(?=[^\s%]+%)
- 一個正向前瞻,需要除空格之外的任何一個或多個字符,並且%
緊鄰當前位置(.+?)
- 第 1 組:除換行符以外的任何一個或多個字符%
- 一個%
字符。請參閱 JavaScript 演示:
const some_hardcoded_value = ".+?"; const regex = new RegExp("%(?=[^\\s%]+%)(" + some_hardcoded_value + ")%", "g"); const str = "%link% This shouldn't %my link% %%link,,,,,%%%%"; console.log(Array.from(str.matchAll(regex), x => x[1]));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.