如何使正则表达式规则起作用?

时间:2019-07-15 01:31:49

标签: javascript jquery regex

尝试交换字符串的一部分时,正则表达式遇到问题。

规则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>

我将\更改为$,但仍然无法正常工作。

这里是示例:https://jsfiddle.net/WRobynson/3L7ogsnv/38/

0 个答案:

没有答案