Javascript 正则表达式仍然允许在末尾使用十进制
大家好,我在angular工作,我正在尝试创建一个过滤器,只允许数字的格式为Javascript 正则表达式仍然允许在末尾使用十进制,javascript,angularjs,regex,Javascript,Angularjs,Regex,大家好,我在angular工作,我正在尝试创建一个过滤器,只允许数字的格式为“任意数量的数字。任意数量的数字”,否则,如果不是[0-9.]格式,将阻止输入。该模式仍然允许在输入字段中输入这样的数字000.00. 如何阻止它插入最后一个小数点?提前感谢您的帮助 代码 $scope.filterValue = function($event, value){ var char = String.fromCharCode($event.keyCode); if(value === nu
“任意数量的数字。任意数量的数字”
,否则,如果不是[0-9.]
格式,将阻止输入。该模式仍然允许在输入字段中输入这样的数字000.00.
如何阻止它插入最后一个小数点?提前感谢您的帮助
代码
$scope.filterValue = function($event, value){
var char = String.fromCharCode($event.keyCode);
if(value === null){
if(isNaN(char)){
$event.preventDefault();
}
}else{
var pattern = /^-?[0-9]{0,}\.?[0-9]{0,}$/;
if(pattern.test(value)){
if(isNaN(char) && (value.indexOf(".") == value.length-1)){
$event.preventDefault();
}
}else{
$event.preventDefault();
}
}
};
试试这个
var regex = /^-?([0-9]{1,})(?:\.[0-9]+)?$/;
试试这个
var regex = /^-?([0-9]{1,})(?:\.[0-9]+)?$/;
我将引用一篇由比我聪明的人写的文章。以下是此处建议的正则表达式:
^[-+]?[0-9]*\.?[0-9]+$
还有一个解释——它定义了可选输入和强制输入。在这种情况下,您希望至少有一个数字是最终的[0-9]+
,但也允许有更多的数字和可选的点字符。正则表达式还允许数字以+
或-
开头
var regex=/^[-+]?[0-9]*\.?[0-9]+$/;
var测试=功能(输入){
console.log(“测试[“+input+”]。结果:”+(regex.test(input)?“通过”:“失败”);
}
//有效的
测试(“1”);
测试(“2.1”);
测试(“3.14”);
测试(“-4”);
测试(“+5”);
测试(“.6”);
测试(“-.7”);
测试(“+8”);
//无效的
测试(“”;//是-空字符串
测试(“.”);
测试(“-”);
测试(“+”);
测试(“-”);
测试(“+”);
测试(“9”);
测试(“10..1”);
试验(“11.1.2”);
测试(“12.1”);
测试(“…13”);
测试(“-.14”);
试验(“+…15”)代码>我将引用一篇由比我聪明得多的人写的文章。以下是此处建议的正则表达式:
^[-+]?[0-9]*\.?[0-9]+$
还有一个解释——它定义了可选输入和强制输入。在这种情况下,您希望至少有一个数字是最终的[0-9]+
,但也允许有更多的数字和可选的点字符。正则表达式还允许数字以+
或-
开头
var regex=/^[-+]?[0-9]*\.?[0-9]+$/;
var测试=功能(输入){
console.log(“测试[“+input+”]。结果:”+(regex.test(input)?“通过”:“失败”);
}
//有效的
测试(“1”);
测试(“2.1”);
测试(“3.14”);
测试(“-4”);
测试(“+5”);
测试(“.6”);
测试(“-.7”);
测试(“+8”);
//无效的
测试(“”;//是-空字符串
测试(“.”);
测试(“-”);
测试(“+”);
测试(“-”);
测试(“+”);
测试(“9”);
测试(“10..1”);
试验(“11.1.2”);
测试(“12.1”);
测试(“…13”);
测试(“-.14”);
试验(“+…15”)代码>这些正则表达式应该涵盖您可能需要的内容。
总体假设是必须有输入,因此我们使用
积极检查表格的交替
这不需要点
^-?(?:\d+(?:\。\d*)?\。\d+$
^
-?
(?:
\d+ # Digits
(?: \. \d* )? # Optional ( dot, optional ( digits ) )
| # or,
\. \d+ # Dot, digits
)
$
^
-?
(?:
\d+ # Digits
\. \d* # Dot, optional digits
| # or,
\. \d+ # Dot, digits
)
$
这需要一个点
^-?(?:\d+\.\d*|\.\d+$
^
-?
(?:
\d+ # Digits
(?: \. \d* )? # Optional ( dot, optional ( digits ) )
| # or,
\. \d+ # Dot, digits
)
$
^
-?
(?:
\d+ # Digits
\. \d* # Dot, optional digits
| # or,
\. \d+ # Dot, digits
)
$
这些正则表达式应该涵盖您可能需要的内容。
总体假设是必须有输入,因此我们使用
积极检查表格的交替
这不需要点
^-?(?:\d+(?:\。\d*)?\。\d+$
^
-?
(?:
\d+ # Digits
(?: \. \d* )? # Optional ( dot, optional ( digits ) )
| # or,
\. \d+ # Dot, digits
)
$
^
-?
(?:
\d+ # Digits
\. \d* # Dot, optional digits
| # or,
\. \d+ # Dot, digits
)
$
这需要一个点
^-?(?:\d+\.\d*|\.\d+$
^
-?
(?:
\d+ # Digits
(?: \. \d* )? # Optional ( dot, optional ( digits ) )
| # or,
\. \d+ # Dot, digits
)
$
^
-?
(?:
\d+ # Digits
\. \d* # Dot, optional digits
| # or,
\. \d+ # Dot, digits
)
$
你需要点后正好两个数字,或者任意数量的数字吗?@vlaz两边可以有任意数量的数字,所以
是有效的输入吗?@IngoBürk是的,在模式测试(“0.0”)
上它是getfalse
。你的代码可以工作。你需要点后正好两个数字,还是任意数量的数字?@vlaz两边都可以有任意数量的数字所以
是有效的输入吗?@IngoBürk是的,在模式上它是getfalse
。测试(“0.0”)
。你的代码行得通。(…)+
对于分隔符之前的零件有什么意义?很好!很好的观察结果我跳过了分隔符之前的零件的(…)+
有什么意义?很好!很好的观察,我跳过了