产品密钥javascript正则表达式乱七八糟

时间:2018-06-04 16:24:44

标签: javascript jquery regex

我正在制作Windows Vista simulator,目前我正在努力让产品密钥激活。我正在使用JavaScript和正则表达式来格式化输入的文本值,以获得由破折号分隔的五组五个字符的大写集合,我试图通过以下代码实现:



$('#input-product-key').on('input', function() {
  if (!!$(this).val()) { var text = $(this).val().replace('-','').toString().toUpperCase().match(/.{1,5}/g).join("-"); $(this).val(text); }
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<input type="text" id="input-product-key" maxlength="25">
&#13;
&#13;
&#13;

但是,在第12个字符添加到框中后,破折号会添加到不应该越来越多的位置,并且按退格键会添加更多破折号。这是为什么?

1 个答案:

答案 0 :(得分:3)

只需用此.replace('-', '')替换第一个replace

.replace(/-/g,'')

由于先前只会替换第一个-; <{1}}标志将确保使用后者替换每个短划线。

g
$('#input-product-key').on('input', function() {
  if (!!$(this).val()) { var text = $(this).val().replace(/-/g,'').toString().toUpperCase().match(/.{1,5}/g).join("-"); $(this).val(text); }
});