正则表达式js验证 100
正则表达式验证内容1.字符串只能输入数字,运算符和小括号2.小括号必须一一对应3.运算符左右的必须是数字4.运算符输入不能一次性输入两个#错误例子1.100+100-2s...
正则表达式验证内容
1.字符串只能输入数字,运算符和小括号
2.小括号必须一一对应
3.运算符左右的必须是数字
4.运算符输入不能一次性输入两个#
错误例子
1.100+100-2ssss
2.100+(20/2
3.100+哈哈哈
4.100++122
正确例子100+(100+200)/2
请各位大神帮忙写出来一个完整可用的正则,小弟谢谢了 展开
1.字符串只能输入数字,运算符和小括号
2.小括号必须一一对应
3.运算符左右的必须是数字
4.运算符输入不能一次性输入两个#
错误例子
1.100+100-2ssss
2.100+(20/2
3.100+哈哈哈
4.100++122
正确例子100+(100+200)/2
请各位大神帮忙写出来一个完整可用的正则,小弟谢谢了 展开
2个回答
展开全部
所求正则表达式如下:
^(?!.*\)\d)(?!.*[+\-*/]([+\-*/]|\)))(?!.*\([+*/])(?!.*(\d|\))\()(?=\d|\-|\()(?=.*(\d|\))$)(?![^\(]*\))(?!.*\([^\)]*$)[\d+\-*/\(\)]*$
解释:
^
(?!.*\)\d) #规则A,不允许右括号后接数字
(?!.*[+\-*/]([+\-*/]|\))) #规则B,不允许符号后面接符号或右括号
(?!.*\([+*/]) #规则C,不允许左括号后接运算符(- 可以表示负号)
(?!.*(\d|\))\() #规则D,不允许左括号前有数字或右括号
(?=\d|\-|\() #规则E,字符串开头必须是,数字,负号,左括号中的一个
(?=.*(\d|\))$) #规则F:结尾必须是数字或者右括号
(?![^\(]*\)) #规则H:右括号的左边至少存在一个左括号
(?!.*\([^\)]*$) #规则G:左括号的右边至少存在一个右括号
[\d+\-*/\(\)]* #开始匹配,字符串由数字,符号和括号组成
$
没考虑空格的情况,如果接受空格的输入,请自行添加。
JS是做不到限制小括号一一对应的,只有使用.NET的平衡组才能实现这个效果。
加入平衡组的正则表达式为:
^(?!.*[^\d+\-*/\(\)])(?!.*\)\d)(?!.*[+\-*/]([+\-*/]|\)))(?!.*\([+*/])(?!.*(\d|\))\()(?=\d|\-|\()(?=.*(\d|\))$)[^\(\)]*(((?'open'\()[^\(\)]*)+((?'-open'\))[^\(\)]*)+)*(?(open)(?!))$
由于使用了平衡组,此正则表达式需要在.NET环境下运行
测试代码:
<script>
var regex = /^(?!.*\)\d)(?!.*[+\-*/]([+\-*/]|\)))(?!.*\([+*/])(?!.*(\d|\))\()(?=\d|\-|\()(?=.*(\d|\))$)(?![^\(]*\))(?!.*\([^\)]*$)[\d+\-*/\(\)]*$/
alert(regex.test("1+2-3"))
alert(regex.test("100+100-2ssss"))
alert(regex.test("100+(20/2"))
alert(regex.test("100+哈哈哈"))
alert(regex.test("100++122"))
alert(regex.test("100+(100+200)/2"))
</script>
^(?!.*\)\d)(?!.*[+\-*/]([+\-*/]|\)))(?!.*\([+*/])(?!.*(\d|\))\()(?=\d|\-|\()(?=.*(\d|\))$)(?![^\(]*\))(?!.*\([^\)]*$)[\d+\-*/\(\)]*$
解释:
^
(?!.*\)\d) #规则A,不允许右括号后接数字
(?!.*[+\-*/]([+\-*/]|\))) #规则B,不允许符号后面接符号或右括号
(?!.*\([+*/]) #规则C,不允许左括号后接运算符(- 可以表示负号)
(?!.*(\d|\))\() #规则D,不允许左括号前有数字或右括号
(?=\d|\-|\() #规则E,字符串开头必须是,数字,负号,左括号中的一个
(?=.*(\d|\))$) #规则F:结尾必须是数字或者右括号
(?![^\(]*\)) #规则H:右括号的左边至少存在一个左括号
(?!.*\([^\)]*$) #规则G:左括号的右边至少存在一个右括号
[\d+\-*/\(\)]* #开始匹配,字符串由数字,符号和括号组成
$
没考虑空格的情况,如果接受空格的输入,请自行添加。
JS是做不到限制小括号一一对应的,只有使用.NET的平衡组才能实现这个效果。
加入平衡组的正则表达式为:
^(?!.*[^\d+\-*/\(\)])(?!.*\)\d)(?!.*[+\-*/]([+\-*/]|\)))(?!.*\([+*/])(?!.*(\d|\))\()(?=\d|\-|\()(?=.*(\d|\))$)[^\(\)]*(((?'open'\()[^\(\)]*)+((?'-open'\))[^\(\)]*)+)*(?(open)(?!))$
由于使用了平衡组,此正则表达式需要在.NET环境下运行
测试代码:
<script>
var regex = /^(?!.*\)\d)(?!.*[+\-*/]([+\-*/]|\)))(?!.*\([+*/])(?!.*(\d|\))\()(?=\d|\-|\()(?=.*(\d|\))$)(?![^\(]*\))(?!.*\([^\)]*$)[\d+\-*/\(\)]*$/
alert(regex.test("1+2-3"))
alert(regex.test("100+100-2ssss"))
alert(regex.test("100+(20/2"))
alert(regex.test("100+哈哈哈"))
alert(regex.test("100++122"))
alert(regex.test("100+(100+200)/2"))
</script>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<html>
<head>
<script>
function $(e){return document.getElementById(e);}
function go()
{
var reg=/^[1-9]{1}[0-9]{14}$|^[1-9]{1}[0-9]{16}([0-9]|[xX])$/;
if(reg.test($("check").value))
{alert("ok");}
else{alert("no");}
}
</script>
</head>
<body>
<input id="check" type="text" onchange="go()" />
</body>
</html>
<head>
<script>
function $(e){return document.getElementById(e);}
function go()
{
var reg=/^[1-9]{1}[0-9]{14}$|^[1-9]{1}[0-9]{16}([0-9]|[xX])$/;
if(reg.test($("check").value))
{alert("ok");}
else{alert("no");}
}
</script>
</head>
<body>
<input id="check" type="text" onchange="go()" />
</body>
</html>
追问
请看题目
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询