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