使用 replace 删除正则表达式匹配中不存在的字符
use replace to remove chars not existing in a regex match
我正在尝试使用 javascript 正则表达式
允许单个 html 输入框遵循以下模式
- -int(又名任何负数,只要它后面没有零并且在第一个位置)
- 0(允许单个零)
- int(允许)
我使用这个函数删除任何不匹配的东西
$('.dointcheck').live('keyup',
function () {
$(this).val($(this).val().replace((/^((?!:([1-9-]?[0-9])).)/g), ''));
if ($(this).val().length == 0) {
$(this).val(0);
}
});
这是行不通的。
其他例子是:
- /[^-0-9]/g 它会删除所有无效字符,但不会检查减号是否为开头且后跟零。它允许在字符串中的任何地方减号
- (/^((?!:([1-9-]?[0-9])).)/g 不允许 none.
- [^1-9-]?[^0-9]* 允许所有...
我想我遗漏了一些东西..任何建议将不胜感激..
我更改了您的正则表达式并使其更加模块化并且运行良好。
function toValidNumber(int) {
return (/^\s*[+-]?(\d+|\d*\.\d+|\d+\.\d*)([Ee][+-]?\d+)?\s*$/).test(int) ? int : 0;
}
$('.dointcheck').live('keyup',
function () {
$(this).val(toValidNumber($(this).val()));
});
Orginal RegEXP in Whosebug
您可以试试这个正则表达式
^(0).*|^(-?)([1-9]\d*)?.*|^.*
输入
后替换为</code>
<p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre><code>document.querySelector('input').addEventListener('input', ({ target }) => target.value = target.value.replace(/^(0).*|^(-)?([1-9]\d*)?.*|^.*/g, ''));
<input />
我正在尝试使用 javascript 正则表达式
允许单个 html 输入框遵循以下模式- -int(又名任何负数,只要它后面没有零并且在第一个位置)
- 0(允许单个零)
- int(允许)
我使用这个函数删除任何不匹配的东西
$('.dointcheck').live('keyup',
function () {
$(this).val($(this).val().replace((/^((?!:([1-9-]?[0-9])).)/g), ''));
if ($(this).val().length == 0) {
$(this).val(0);
}
});
这是行不通的。 其他例子是:
- /[^-0-9]/g 它会删除所有无效字符,但不会检查减号是否为开头且后跟零。它允许在字符串中的任何地方减号
- (/^((?!:([1-9-]?[0-9])).)/g 不允许 none.
- [^1-9-]?[^0-9]* 允许所有...
我想我遗漏了一些东西..任何建议将不胜感激..
我更改了您的正则表达式并使其更加模块化并且运行良好。
function toValidNumber(int) {
return (/^\s*[+-]?(\d+|\d*\.\d+|\d+\.\d*)([Ee][+-]?\d+)?\s*$/).test(int) ? int : 0;
}
$('.dointcheck').live('keyup',
function () {
$(this).val(toValidNumber($(this).val()));
});
Orginal RegEXP in Whosebug
您可以试试这个正则表达式
^(0).*|^(-?)([1-9]\d*)?.*|^.*
输入
后替换为</code>
<p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre><code>document.querySelector('input').addEventListener('input', ({ target }) => target.value = target.value.replace(/^(0).*|^(-)?([1-9]\d*)?.*|^.*/g, ''));
<input />