我正在以编程方式修改包含一些HTML / JS代码的大型文本文件,并且需要"标记"两个选择器之间有空格的位置,例如ID和className之间的空格,如$(' #btnOne .subElement')。要找到这些,我需要一个RegEx。但是,我正在倒下替换位。
RegEx101 Demo - 正确识别我需要用标记替换内部空间的两个示例(例如$#$#$或其他内容)。 (这个regex101演示有什么问题,整个子字符串是匹配的,而不仅仅是中间的空间 - 我只需要替换它)
这是一个代码片段,其中有一个替换准备就绪,与上面的问题相同。
$('button').click(function(){
var tmp = $('#orig').text();
tmp = tmp.replace("<br>", "\n");
tmp = tmp.replace(/\$\(['"].+ .*\)\./gi,'<span>HOW_TARGET_ONLY_THE_SPACE_CHAR?</span>.');
$('#output').html(tmp);
});
&#13;
#output{margin-top:10px;background:palegoldenrod;}
span{color:brown;font-weight:bold;}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="orig">
function initSxsChartBtns(){<br>
var oneBtnIsAlreadyClicked = false;
$('#databuttons button').each(function(){
if ( $(this).hasClass('btn_DEPRESSED') ) oneBtnIsAlreadyClicked = true;
});
if (!oneBtnIsAlreadyClicked){
$('#txtAdvisory').val('Approximately 25% are registered.');
$('#btnOne .subElement').addClass('btn_DEPRESSED');
$('#btnTwo.sameElement').addClass('btn_DEPRESSED');
}
}
</div>
<button>RegEx Replace</button>
<div id="output"></div>
&#13;
答案 0 :(得分:0)
你可以这样做:
tmp = tmp.replace(/(\$\(['"].+) (.*\)\.)/gm, '$1abc$2');
此处$1
和$2
用于指代RegExp中的捕获组。我尝试尽可能少地更改您的RegExp,我添加的是创建捕获组的括号。
replace
还允许您将函数作为第二个参数传递,从而可以更精确地控制替换。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace