簡體   English   中英

在此JavaScript RegEx中添加刪除前導和尾隨空格

[英]Adding removing leading and trailing spaces in this JavaScript RegEx

如何添加代碼以刪除此正則表達式的前導和尾隨空格?

我嘗試將\\s放在幾個地方,但結果卻很奇怪。

myString就是這樣,它是從with尾隨空格的PHP腳本發送的。

原始碼

var myString = "::This is string 1 ::This is string 2! ";

myString = myString.replace(/\::(.+?)(?![^::])/g,'<li>$1</li>');

alert(myString);

試着

var myString = "::This is string 1 ::This is string 2! ";

myString = myString.replace(/\::(.+?)(?![^::\s])/g,'<li>$1</li>');

alert(myString);

我想要達到的最終結果是

<li>This is string 1</li> // No trailing spaces before or after the `This` and `1`
<li>This is String 2</li>

小提琴

關鍵是要用.+?匹配空格.+? (?![^::\\s])僅告訴正則表達式引擎在后跟空格或:不匹配該字符。

由於您已經在使用惰性匹配,因此只需要使用貪婪的\\s*子模式來匹配.+? 的空格.+?

采用

::(.+?)\s*(?=::|$)

觀看演示

說明:

  • :: -匹配2 : s
  • (.+?) -匹配並捕獲到第1組中的一個或多個字符(換行符除外)
  • \\s* -貪婪地匹配零個或多個空格
  • (?=::|$) -僅在后跟::或字符串末尾。

這是我嘗試展開正則表達式的嘗試(看起來比上面的效率更高):

::(\S*(?:(?=(\s+))\2(?!:|$)\S*)*)

觀看另一個演示

嘗試這個:

var myString = "::This is string 1 ::This is string 2! ";

myString = myString.replace(/\s*\::\s*(.*?)\s*(?=(::|$))/g,'<li>$1</li>');

的jsfiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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