正则表达式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
请各位大神帮忙写出来一个完整可用的正则,小弟谢谢了
展开
 我来答
绯弹亚丝娜
2018-03-01 · TA获得超过1094个赞
知道小有建树答主
回答量:330
采纳率:100%
帮助的人:135万
展开全部
所求正则表达式如下:
^(?!.*\)\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>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
司马刀剑
高粉答主

2018-03-01 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7519万
展开全部
<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>
追问
请看题目
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式