簡體   English   中英

正則表達式到 select 文本,沒有空格,有限制

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

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