【问题标题】:Regex to remove all <br /> tags from beginning and end of a string in javascript正则表达式从javascript中字符串的开头和结尾删除所有<br />标签
【发布时间】:2015-08-26 11:38:25
【问题描述】:

我有一个字符串,在开头和结尾以及中间有多个 br 标签。但我想删除字符串开头或字符串结尾的所有 br 标签。

Input : <br /> <br /> <br /> 
        <br /> <br />This is <br /> Test <br /> string. <br /> <br /> <br /> 

Output should be - This is <br /> Test <br /> string. 

我尝试了以下正则表达式 tp 替换字符串

Input.replace(/^(<br( \/)?>)*|(<br( \/)?>)*$/, '')

但它不起作用。

我已经尝试了一个单独的正则表达式来删除所有 br 最后它正在工作。

Input.replace(/(<br \/>\s*)+$/, '')

如何获得类似的正则表达式以从头开始删除 br 标记。或者如果我可以编写一个组合的正则表达式。

【问题讨论】:

  • 替换 (
    \s)+

标签: javascript jquery regex string


【解决方案1】:

您可以使用以下正则表达式:

/^(\s*<br( \/)?>)*|(<br( \/)?>\s*)*$/gm

查看演示https://regex101.com/r/cH7kL2/1

请注意,由于您有一个多行字符串,因此您需要使用 m 标志,这会强制您的正则表达式引擎匹配每行开头的锚点。

演示:

Input.replace(/^(\s+<br( \/)?>)*|(<br( \/)?>\s)*$/gm, '')

【讨论】:

  • 您的链接中的匹配信息中只有两个匹配项
  • @TusharGupta 那有什么问题呢?结果将是 OP 想要的。
  • 它在末尾替换所有 br 标签,但不替换开头的 br 标签
  • @TBAG 您是否尝试过使用问题中的字符串的正则表达式?它在链接中工作正常。
  • 我试过

    测试题


【解决方案2】:

试试这个正则表达式:

Input.replace(/^( |<br \/>)*(.*?)( |<br \/>)*$/,"$2");

这里是小提琴http://jsfiddle.net/WBfxm/68/

【讨论】:

  • 我的 br 标签是
    所以我尝试了 Input.replace(/(^
    |
    $)/g,"") 但它不是工作
【解决方案3】:

如果您需要使用 br 修剪(白色)空格(请注意浏览器处理不同的 br 格式,例如&lt;br&gt;, &lt;br/&gt;, &lt;br /&gt; and &lt;br / &gt;,请使用:/^(\s*&lt;br\s*\/?\s*&gt;\s*)*|(\s*&lt;br\s*\/?\s*&gt;\s*)*\s*$/g。 在此处查看示例https://regex101.com/r/ls9eoq/2

【讨论】:

  • 这是迄今为止最好的解决方案。不优雅,但对于像我这样的正则表达式新手来说,它可以完成这项工作。我在这里测试的唯一一个适用于所有浏览器的解决方案。
【解决方案4】:

你可以使用这样的正则表达式:

SELECT REGEXP_REPLACE('<br>Hello<br>world<br>','^(<br>)*(.*?)(<br>)*$','\\2');

示例

MariaDB [(none)]> SELECT REGEXP_REPLACE('<br>Hello<br>world<br>','^(<br>)*(.*?)(<br>)*$','\\2');
+------------------------------------------------------------------------+
| REGEXP_REPLACE('<br>Hello<br>world<br>','^(<br>)*(.*?)(<br>)*$','\\2') |
+------------------------------------------------------------------------+
| Hello<br>world                                                         |
+------------------------------------------------------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> SELECT REGEXP_REPLACE('Hello<br>world<br>','^(<br>)*(.*?)(<br>)*$','\\2');
+--------------------------------------------------------------------+
| REGEXP_REPLACE('Hello<br>world<br>','^(<br>)*(.*?)(<br>)*$','\\2') |
+--------------------------------------------------------------------+
| Hello<br>world                                                     |
+--------------------------------------------------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> SELECT REGEXP_REPLACE('<br>Hello<br>world','^(<br>)*(.*?)(<br>)*$','\\2');
+--------------------------------------------------------------------+
| REGEXP_REPLACE('<br>Hello<br>world','^(<br>)*(.*?)(<br>)*$','\\2') |
+--------------------------------------------------------------------+
| Hello<br>world                                                     |
+--------------------------------------------------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> SELECT REGEXP_REPLACE('Hello<br>world','^(<br>)*(.*?)(<br>)*$','\\2');
+----------------------------------------------------------------+
| REGEXP_REPLACE('Hello<br>world','^(<br>)*(.*?)(<br>)*$','\\2') |
+----------------------------------------------------------------+
| Hello<br>world                                                 |
+----------------------------------------------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]>

【讨论】:

    【解决方案5】:

    试试这个

    Input.replace(/^[(<br( \/)> )|(<br( \/)>)]*|[( <br( \/)>)|(<br( \/)>)]*$/g, '');
    

    【讨论】:

      【解决方案6】:

      应该是:

      Input.replace(/^(\ ?<br( \/)?>\ ?)+|(\ ?<br( \/)?>\ ?)+$/, '');
      

      修改后的代码应清除字符串前面或末尾的所有空格和&lt;br&gt;&lt;br /&gt;标签

      这里是工作示例:http://www.rubular.com/r/rHYW4DqJKT(已修改)

      编辑:实际上您缺少的是像这样将替换值赋予原始变量:

      Input = Input.replace(/^(\ ?<br( \/)?>\ ?)+|(\ ?<br( \/)?>\ ?)+$/, '');
      

      Working example in jsfiddle

      【讨论】:

      • 不工作。我的测试字符串是“









        测试题”跨度>
      • replace 不会替换字符串本身,而是返回修改后的字符串
      【解决方案7】:

      这个对我有用

      this.htmlToPreview = payload.parsedHTML.replace(/<br\s*\/?>/gm, '');
      

      【讨论】:

        【解决方案8】:

        这将替换 inputValue 中的每个匹配项

        const regexBr = new RegExp('<br/>', 'gi');
        const outputValue = inputValue.replace(regexBr, ' ');

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-09-01
          • 1970-01-01
          • 2013-08-04
          • 1970-01-01
          • 2016-07-08
          • 1970-01-01
          • 2012-03-25
          • 1970-01-01
          相关资源
          最近更新 更多