正则表达式如何匹配123321 , 12321这样的对称数 如题,必须用正则,其他方式请勿讨论正则表达式正则javascript 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 基本算法,并非牛人。/^(?!.*_)(\d)(\d)(\d)\3?\2\1$/alert(/^(?!.*_)(\d)(\d)(\d)\3?\2\1$/.test("123321"));alert(/^(?!.*_)(\d)(\d)(\d)\3?\2\1$/.test("12321")); Test:<script type=text/javascript>var i = 0, symmetrical = [],arr = ["123321", "12321", "1233321", "123421", "12332", "456654", "78987"];while(arr[i++]) { /^(?!.*_)(\d)(\d)(\d)\3?\2\1$/.test(arr[i-1]) && symmetrical.push(arr[i-1]);}alert("上面数字字符串集合中对称的有:\n" + symmetrical.join("\n"))</script> 牛人啊;不过貌似对对称数的长度有限制啊最多六位,应该是和你的(\d)(\d)(\d)\3?\2\1这个是写死的有关系,如"1234321"就验证不出来,能改进下就完美了 /^(?!.*_)(\d)(\d)(\d)\3?\2\1$/(?!.*_)是什么意思 这样好了function asdsa(a){ return new RegExp("^\\d{"+Math.ceil(a.length/2)+"}"+a.slice(0,Math.floor(a.length/2)).split("").reverse().join("")+"$").test(a);}alert(asdsa("1234567654321")); 直接alert(str == str.split("").reverse().join(""))岂不是更好。干嘛非要凑一个正则 直接alert(str == str.split("").reverse().join(""))岂不是更好。干嘛非要凑一个正则因为所以 直接alert(str == str.split("").reverse().join(""))岂不是更好。干嘛非要凑一个正则因为所以++++++++++++ 看来用正则是行不通,什么方式简单就用什么方式吧,我自己也写出了一个比较好的方式,拿出来给大家看看吧, function isSymmetrical(str){ return str == str.split("").reverse().join(""); } 判断下拉框值是否重复 求助:setInterval()的函数里设置CSS属性不起作用!? 如何实现鼠标移到图片上,就显示一个小的菜单 这个功能,用JS怎么实现呢,谢谢大家? 如何让弹出菜单显示在主页最上层 javascript怎么检查一个域存不存在? 超简单问题 简单的javascript!请问如何实现判断文本框输入内容,然后进行网页跳转呢?? 一个错误 js表单验证,求指导 NODEJS用SOCKET发送JSON数据里面包含SOCKET对象报错 window.onload调用函数的问题
alert(/^(?!.*_)(\d)(\d)(\d)\3?\2\1$/.test("123321"));alert(/^(?!.*_)(\d)(\d)(\d)\3?\2\1$/.test("12321"));
var i = 0, symmetrical = [],
arr = ["123321", "12321", "1233321", "123421", "12332", "456654", "78987"];while(arr[i++]) {
/^(?!.*_)(\d)(\d)(\d)\3?\2\1$/.test(arr[i-1]) && symmetrical.push(arr[i-1]);
}alert("上面数字字符串集合中对称的有:\n" + symmetrical.join("\n"))
</script>
不过貌似对对称数的长度有限制啊最多六位,应该是和你的(\d)(\d)(\d)\3?\2\1这个是写死的有关系,如"1234321"就验证不出来,能改进下就完美了
{
return new RegExp("^\\d{"+Math.ceil(a.length/2)+"}"+a.slice(0,Math.floor(a.length/2)).split("").reverse().join("")+"$").test(a);
}
alert(asdsa("1234567654321"));
直接alert(str == str.split("").reverse().join(""))岂不是更好。干嘛非要凑一个正则
直接alert(str == str.split("").reverse().join(""))岂不是更好。干嘛非要凑一个正则
因为
所以
直接alert(str == str.split("").reverse().join(""))岂不是更好。干嘛非要凑一个正则
因为
所以++++++++++++
return str == str.split("").reverse().join("");
}