尝试交换字符串的一部分时,正则表达式遇到问题。
规则3对我不起作用。应该在长度7的字符串中将第1个零之后的第2位和第3位数字更改为12。
这是我的代码:
$("#num1").keyup(function() {
$("table tbody tr").each(function(el) {
var de = $(this).find(".de").html();
var para = $(this).find(".para").html();
// remove "/" from 'de'
de = de.replace(/^\/(.*)\/$/, '$1');
// remove "/" from 'para'
para = para.replace(/^\/(.*)\/$/, '$1');
// change "\" por "$" in 'para' (js uses '$')
para = para.replace(/[\\]/g, '$');
var exp = new RegExp(de);
var num1 = $("#num1").val();
$("#num2").val(num1.replace(exp, para));
// exit 'each' on match
if (exp.test(num1)) {
return false;
}
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="tab_rules" border="1">
<tr>
<td>rule 1</td>
<td class="de">/10050/</td>
<td class="para">/99999950/</td>
</tr>
<tr>
<td>rule 2</td>
<td class="de">/^911$/</td>
<td class="para">/190/</td>
</tr>
<tr>
<td>rule 3</td>
<td class="de">/^\(0\)..\(....\)$/</td>
<td class="para">/\112\2/</td>
</tr>
</table>
<div>
<p>TEST</p>
<p><input id="num1" type="text" placeholder='Type number here' /></p>
<p><input id="num2" type="text" readonly /></p>
</div>
我将\
更改为$
,但仍然无法正常工作。