我来帮你搞
那个整体为 string reg1=(\[[0-9]+,[0-9]+\])|\[[0-9]+,\*\]|\[\*,[0-9]+\]|\[\*,\*\]
运算符为 string reg2=[+\-\*/]
比较符号为:string reg3=(>=)|(<=)|(!=)|[><=]
整体你自己连起来吧
那个整体为 string reg1=(\[[0-9]+,[0-9]+\])|\[[0-9]+,\*\]|\[\*,[0-9]+\]|\[\*,\*\]
运算符为 string reg2=[+\-\*/]
比较符号为:string reg3=(>=)|(<=)|(!=)|[><=]
整体你自己连起来吧
<script language="JavaScript">
<!--
var aa = "[14,2]+[20,3] <[15,3]+[16,8]+[15,6]";
var reg = /^((\[(\d+|\*),(\d+|\*)\])(\s|)(\+|\-|\*|\/)(\s|))*(\[(\d+|\*),(\d+|\*)\])(\s|)(>|<|>=|<=|!=|=)(\s|)((\[(\d+|\*),(\d+|\*)\])(\s|)(\+|\-|\*|\/)(\s|))*(\[(\d+|\*),(\d+|\*)\])$/;
alert(reg.test(aa));
//-->
</script>试试看。
[014,2]+[20,123] > 145 <[5,*]+[16,8]+[15,6]+15 --- NG
<html>
<title>AdvancedRegularExpression</title>
<script language="javascript">
function Verify()
{
var str = document.getElementById("txt").value;
var re = /^\[(\d+|\*),(\d+|\*)\]((\+|\-|\*|\/)\[(\d+|\*),(\d+|\*)\])*(>|=|<|>=|<=|!=)\[(\d+|\*),(\d+|\*)\]((\+|\-|\*|\/)\[(\d+|\*),(\d+|\*)\])*$/gi;
var lbl = document.getElementById("lblMsg");
lbl.innerHTML += str + " : " + re.test(str).toString() + "<br>";
}
</script>
<body>
<input type="text" id="txt"/><br/>
<input type="button" name="submit" value="Submit" onclick="Verify();">
<div id="lblMsg"></div>
</body>
</html>
不过很长。
快崩溃了,
觉得这么长的正则式还不如编程实现了呢。
/^\s*((\[(([1-9]\d*|\d),([1-9]\d*|\d|\*)|([1-9]\d*|\d|\*),([1-9]\d*|\d))\]|[1-9]\d*|\d)\s*[+-/\*])*(\[(([1-9]\d*|\d),([1-9]\d*|\d|\*)|([1-9]\d*|\d|\*),([1-9]\d*|\d))\]|[1-9]\d*|\d)\s*([+-/\*]|[<>!]=?|=)\s*((\[(([1-9]\d*|\d),([1-9]\d*|\d|\*)|([1-9]\d*|\d|\*),([1-9]\d*|\d))\]|[1-9]\d*|\d)\s*[+-/\*])*(\[(([1-9]\d*|\d),([1-9]\d*|\d|\*)|([1-9]\d*|\d|\*),([1-9]\d*|\d))\]|[1-9]\d*|\d)$/不会你看完之后你又有新要求了吧?!!!!
中间的比较符号< >....两边允许有空格
<script>
var reg = /^(?:(?:\[\d+,(?:\d+|[\+\-\*\/])\]|\d+)\+)*(?:\[\d+,(?:\d+|[\+\-\*\/])\]|\d+)\s*(?:[<>=]|>=|<=|!=)\s*(?:(?:\[\d+,(?:\d+|[\+\-\*\/])\]|\d+)\+)*(?:\[\d+,(?:\d+|[\+\-\*\/])\]|\d+)$/;
var str = '[14,2]+[20,3] <[15,3]+[16,8]+[15,6]';
var str2 = '[14,2]+[20,3] <=[15,3]+[16,8]+[15,6]+20';
var str3 = '[14,*] !=[15,*]+[16,*]';
alert(reg.test(str)); // true
alert(reg.test(str2)); // true
alert(reg.test(str3)); // true
</script>
中间的比较符号 < >....两边允许有空格 HTML code<script>
var reg = /^(?:(?:\[\d+,(?:\d+|[\+\-\*\/])\]|\d+)\+)*(?:\[\d+,(?:\d+|[\+\-\*\/])\]|\d+)\s*(?:[<>=]|>=|<=|!=)\s*(?:(?:\[\d+,(?:\d+|[\+\-\*\/])\]|\d+)\+)*(?:\[\d+,(?:\d+|[\+\-\*\/])\]|\d+)$/;
var str = '[14,2]+[20,3] <[15,…
刚刚的正则式里有一处错误。
判断符号校验错了,([+-/\*]|[<>!]=?|=) 应该改为 ([<>!]=?|=)另外,楼主对于空格确实交待的不清楚。
为处理上方面这样做比较好。(1)将字符串中的空格去掉
str.replace(/\s+/g,"");(2)然后再进行判断。
/^((\[(([1-9]\d*|\d),([1-9]\d*|\d|\*)|([1-9]\d*|\d|\*),([1-9]\d*|\d))\]|[1-9]\d*|\d)[+-/\*])*(\[(([1-9]\d*|\d),([1-9]\d*|\d|\*)|([1-9]\d*|\d|\*),([1-9]\d*|\d))\]|[1-9]\d*|\d)([<>!]=?|=)((\[(([1-9]\d*|\d),([1-9]\d*|\d|\*)|([1-9]\d*|\d|\*),([1-9]\d*|\d))\]|[1-9]\d*|\d)[+-/\*])*(\[(([1-9]\d*|\d),([1-9]\d*|\d|\*)|([1-9]\d*|\d|\*),([1-9]\d*|\d))\]|[1-9]\d*|\d)$/
有什么办法可以获得[]中的两个数字(或是*),我想对那里面的两个数字进行验证,不能超过一个范围
[1,2] 1有个范围 ,2也有个范围, 范围都是动态生成的
/([^[])(([1-9]\d*|\d),([1-9]\d*|\d|\*)|([1-9]\d*|\d|\*),([1-9]\d*|\d))(?=\])|[1-9]\d*/然后用split把两个数分开。当然你需要循环处理了。
接下来你解析判断一下数字的范围就可以了。
试试这个/(?=[^[])(([1-9]\d*|\d),([1-9]\d*|\d|\*)|([1-9]\d*|\d|\*),([1-9]\d*|\d))(?=\])/