regexp-substr 相关问题


无效表达

这是我的代码 formatted_name = var.resource_type == "virtual_machine" ?格式("vm-%s-00", substr(local.truncated_base_name, 0, 12)) : var.resource_type == ...


Oracle NLS 设置特殊字符替换处理

我在Oracle中发现了一个奇怪的情况 面临的情况 我创建了一个带有 substr 的函数,它用于替换长度字节 >= 2 的所有字符。 我用 substr 来分割字符...


如何在 RegExp javascript 中排除搜索词中的逗号

我有字符串: const text = 'A Jack# Jack#aNyWord Jack,Jack'; 我只想搜索单词“Jack”,但如果 Jack 包含 # 字符,则表示真正的均值匹配。 我尝试像: const text = 'A Jack#...


拆分字符串,并获取子字符串

假设我有一个名字:Marco Peter Hanson 从这个名字中,我只想显示缩写,例如:M.P.H 我怎样才能做到这一点?我尝试使用 substr 和 split_part,但似乎无法正确执行。 苏...


Javascript - 标签之间的全局替换字符串

有人可以帮助我使用正则表达式 javascript 代码来用换行符替换所有 标签吗? " 在 分区中找到的字符。例如,传递给 的字符串 有人可以帮助我使用正则表达式 JavaScript 代码来用换行符替换所有 <br /> 标签吗? " 在 <pre> 分区中找到的字符。例如,传递给包含以下内容的函数的 string: <pre class="exampleclass">1<br />2<br />3</pre> 应返回为(未显示换行符,但我希望您明白): <pre class="exampleclass">1(newline)2(newline)3</pre> 另一个例子: <div>foo<br />bar<pre>1<br />2</pre></div> 返回为: <div>foo<br />bar<pre>1(newline)2</pre></div> 请注意,类和分区内容以及字符串中的其他内容(其他 div 等)都是动态的。另一方面,<br />标签不会改变,因此不需要迎合<br>或其他变体。 注意 - 我正在使用字符串,而不是 HTML 元素。以防万一我提出问题的方式出现任何混淆。 你可以使用 str.match(/<pre(?:.*?)>(?:.*?)<\/pre>/g); 然后对于所有比赛 replaced = match.replace(/<br \/>/g, '\n'); str.replace(match, replaced); 所以可能是这样的: var matches = str.match(/<pre(?:.*?)>(?:.*?)<\/pre>/g), len = matches.length, i; for (i = 0; i < len; i++) { str = str.replace(matches[i], matches[i].replace(/<br \/>/g, '\n')); } 编辑:更改为也匹配<pre class="">。 如果它是一份文件的话 var allPre = document.getElementsByTagName('pre'); for (var i=0,n=allPre.length;i<n;i++) { allPre[i].innerHTML=allPre[i].innerHTML.replace(/<br \/>/gi,"\n"); } 因为在某些innerHTML实现中<br />可能是<BR /> 也看看这里:使用正则表达式调用替换分隔符内的模式 您可以使用 DOM 来执行此操作,并避免尝试使用正则表达式解析 HTML。然而,这会让你受到浏览器实现 innerHTML 的支配。例如,IE 将返回大写的标签名称,并且不一定会关闭所有标签。 查看实际效果:http://jsfiddle.net/timdown/KYRSU/ var preBrsToNewLine = (function() { function convert(node, insidePre) { if (insidePre && node.nodeType == 1 && node.nodeName == "BR") { node.parentNode.replaceChild(document.createTextNode("\n"), node); } else { insidePre = insidePre || (node.nodeType == 1 && node.nodeName == "PRE"); for (var i = 0, children = node.childNodes, len = children.length; i < len; ++i) { convert(children[i], insidePre); } } } return function(str) { var div = document.createElement("div"); div.innerHTML = str; convert(div, false); return div.innerHTML; } })(); var str = "<div>foo<br />bar<pre>1<br />2</pre></div>"; window.alert(preBrsToNewLine(str)); 我(和其他人)认为使用正则表达式来解析 html(或 xml)是一个坏主意。您可能想使用递归状态机。这样的事情能解决问题吗?有很大的优化空间,但我认为这说明了问题。 function replace(input, pre) { var output = []; var tag = null; var tag_re = /<(\w+)[^>]*?(\/)?>/; // This is a bit simplistic and will have problems with > in attribute values while (tag_re.exec(input)) { output.push(RegExp.leftContext); input = RegExp.rightContext; tag = RegExp.$1; if (pre && tag == 'br') { output.push('\n'); } else { output.push(RegExp.lastMatch); } if (!RegExp.$2) { // not a self closing tag output.push(replace(input, tag=='pre')); return output.join(''); } } output.push(input); return output.join(''); } 我经常使用这种类型的“replaceBetween”,并且有这个方法.. function replaceBetween(input, start, end, newText) { var reg = new RegExp(start + ".*?" + end, "g"); var newString = input.replace(reg, start + newText + end); return newString; }


© www.soinside.com 2019 - 2024. All rights reserved.