Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 领先和落后<;br>;去除_Javascript_Regex - Fatal编程技术网

Javascript 领先和落后<;br>;去除

Javascript 领先和落后<;br>;去除,javascript,regex,Javascript,Regex,我有字符串表达式,比如 <br /><br /><br/ >this is <br /><br /><br/ > a test<br /><br /><br/ ><br> 这是一个测试 其中,我只需要使用纯javascript删除第一组和最后一组标记。您可以使用以下正则表达式: /^\s*<br\s*\/?\s*>|<br\s*\/?\s*>\s*

我有字符串表达式,比如

<br /><br /><br/ >this is <br /><br /><br/ > a test<br /><br /><br/ ><br> 


这是一个测试





其中,我只需要使用纯javascript删除第一组和最后一组

标记。

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

/^\s*<br\s*\/?\s*>|<br\s*\/?\s*>\s*$/ig
/^\s*|\s*$/ig
将其替换为空字符串:

'   <br /><br /><br/ >this is <br /><br /><br/ > a test<br /><br /><br/ ><br> '.replace(/^\s*<br\s*\/?\s*>|<br\s*\/?\s*>\s*$/ig, '')
// => "<br /><br/ >this is <br /><br /><br/ > a test<br /><br /><br/ >"



这是一个测试




'。替换(/^\s*|\s*$/ig,) //=>“
这是一个测试

更新

要删除多个引用,请执行以下操作:

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




这是一个测试。替换(/^\s*()+|()+\s*$/ig,) //=>“这是一个测试”
如果全局执行,这将匹配所有前导换行符和所有尾随换行符(以及前后空格,如果要保留前导/尾随空格,请告诉我):

^\s*(?:)+|(?:)+\s*$

像这样使用它:

var regex=/^\s*(?:)+|(?:)+\s*$/gi,
string='

这是一个测试


; string=string.replace(正则表达式“”)//更换 console.log(字符串)
<代码>

而不是尝试用ReGEXP处理HTML,即使它看起来无害,也永远不是一个好主意,请考虑用CSS中和<代码> BR>代码>标签。

br { display: none; }

如果要压缩多个
br
标记,则

br + br { display: none; }
在您的特定情况下,CSS无法检测
br
是否出现在元素的开头或结尾。这里有一点JavaScript。通常,最好使用DOM API像这样操作DOM,而不是在DOM的字符串表示上使用regexp:

function removeLeadingTrailingBRs(elt) {
    var node;
    while (node=elt.querySelector('br:first-child')) { elt.deleteChild(node); }
    while (node=elt.querySelector('br:last-child'))  { elt.deleteChild(node); }
}
或者,如果您坚持保理:

function deleteBySelector(elt, selector) {
    var node;
    while (node=elt.querySelector(selector)) { elt.deleteChild(node); }
}
function remoteLeadingTrailingBRs(elt) {
    deleteBySelector('br:first-child');
    deleteBySelector('br:last-child');
}

我终于找到了解决办法。下面是为我工作的正则表达式

    /^[<br>]*\s*[<br>]*|[<br>]*$/g 
/^[
]*\s*[
]*.[
]*$/g

谢谢你的帮助

一般来说,在上,您需要一些需要帮助的工作代码。简单地要求社区提供解决方案并不是这样做的目的。弗兰克,抱歉!。。从今以后一定要保证!请考虑选择正确的答案如下。已经有4个答案。我添加了一个
*
量词,因为他想删除

元素的前导和尾随
集合。谢谢hanks@Php-dev,我误解了这个问题。我改进了你的编辑,在斜杠后面有0+的空格,因为他有一些这样的例子。谢谢Sam!。。但是,我想删除第一组和最后一组
标记,根据您的示例,它删除了开头和结尾的一个
标记。@DavidR,我的错。我已经更新了。还有一个可能的调整,你可能想要(前导/尾随空格目前正在被修剪),让我知道:)正则表达式是没有意义的
[
]
匹配
,不一定是

标记。
function deleteBySelector(elt, selector) {
    var node;
    while (node=elt.querySelector(selector)) { elt.deleteChild(node); }
}
function remoteLeadingTrailingBRs(elt) {
    deleteBySelector('br:first-child');
    deleteBySelector('br:last-child');
}
    /^[<br>]*\s*[<br>]*|[<br>]*$/g