前两天用js匹配正则表达式时遇到一奇怪现象,第一次匹配的结果为true,而第二次的时候为false,让我纠结了半天最终找到原因了。我原先的代码是这样的
a=$("#test").val();
var str=/[*]/g //替换星号的正则表达式,有g表示全局匹配,否则只匹配一次
alert(str.test(a));//没别的意义,确定一下写的正则是否有问题
if(str.test(a)){
//进行其它处理
}
结果弹框一直true但是死活不执行if里边的代码,后来发现是if里的状态为false根本没进去,到现在也没想清楚为什么。
先看看下面的代码吧:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script>
function test1(){
var a=$("#test").val();
var str=/[*]/g //替换星号的正则表达式,有g表示全局匹配,否则只匹配第一个
var b=a.replace(/as/g,"@")
alert("第一次匹配:"+str.test(a))
alert("第二次匹配:"+str.test(a))
alert("第二次匹配:"+str.test(a))
</script>
<body>
<form method="post" action="">
<input type="text" name="" id="test">
<input type="button" value="测试" onclick="test1()">
</form>
</body>
</html>
按照我们平时写代码的逻辑,如果含有‘*’三次弹出的结果都应该为true,但是这样匹配后的结果确出人意料,单击测试后发现弹出的结果为“第一次匹配:true”,“第二次匹配:false”,"第三次匹配:true"后至于是什么原因造成的我也不懂,反正大家用的时候注意一下。如果有哪位高手明白的话,还烦劳指点指点,我个人估计是跟正则表达式有关系,因为它也算是一种语言吧。不过我们有这样的需求的话可以把上面的代码这样改改:
alert("第一次匹配"+new RegExp(str).test(a))
alert("第二次匹配"+new RegExp(str).test(a))
alert("第二次匹配"+new RegExp(str).test(a))
这样的话就跟我们预期的结果一样了,三次都弹出“true”其实就是每次都把这个正则表达式重新创建一下,跟你复制粘贴一下那个正则表达式一样。个人遇到的一个怪异问题,大家再次遇到的话注意一下,有那位高手知道原委的话就指点指点哦,祝大家工作愉快。
分享到:
相关推荐
本文写作时,一个包含了用正则表达式进行文本处理的Java规范需求(Specification Request)已经得到认可,你可以期待在JDK的下一版本中看到它。 然而,如果现在就需要使用正则表达式,又该怎么办呢?你可以从Apache...
正则表达式匹配工具很好很强大 放心使用 内附各种经典正则匹配公式
易语言正则表达式类匹配中文源码,正则表达式类匹配中文,创建,取正则文本,替换,取匹配数量,取匹配文本,取子匹配文本,取子匹配数量
而本软件正是把强大的正则功能完美地添加到表格中,让 Excel、WPS 支持正则表达式的搜索、匹配提取、替换、定位等,让数据处理能力进化一个层次! 让 Office Excel、WPS 表格支持正则表达式的免费插件:「Excel ...
在labview中使用正则匹配模式很简单,难的就是使用正则表达式。很多人都搞不明白,查了很多资料还是不太明白。实际上就是一些类似通配符在作怪和其他语言也差不多。附件带上了,可以研究研究,构造正则表达式的方法...
正则表达式(regular expression)是一个描述字符模式的对象。JavaScript的RegExp类表示正则表达式,而String和RegExp都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数。 ECMAScript v3对JavaScript...
正则表达式常用匹配.doc正则表达式常用匹配正则表达式常用匹配正则表达式常用匹配正则表达式常用匹配正则表达式常用匹配正则表达式常用匹配正则表达式常用匹配正则表达式常用匹配正则表达式常用匹配正则表达式常用...
正则表达式匹配器,自己开发的小工具,.net 4.0支持
kettle 根据系统时间加正则表达式动态匹配获取多个文本文件
java通过正则表达式匹配获取MAC(支持windows和Linux)
这个工具主要用于正则表达式学习中正则式的匹配检测!绝对 正点
正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式正则表达式...
借用代码之美中的正则表达式匹配代码,供大家学习用。
正则表达式匹配调试工具,
正则表达式匹配小工具源码 介绍 用于学习正则表达式的方便快捷验证正确性 可以保存正则表达式(使用XML文件存储,使用XmlHelper.cs工具类) 可以换肤,窗体渐变宽度效果
匹配中文字符的正则表达式 匹配空白行的正则表达式 匹配HTML标记的正则表达式 匹配Email地址的正则表达式 匹配网址URL的正则表达式 匹配国内电话号 匹配中国邮政编码 匹配身份证 匹配ip地址 匹配特定字符串 匹配中文...
易语言正则表达式匹配中文源码,正则表达式匹配中文,搜索
IP地址的正则表达式IP地址的正则表达式
实现3-11正则表达式匹配问题.cpp
正则表达式的语法很令人头疼,即使对经常使用它的人来说也是如此。工作之余整理正则表达式的匹配规则,希望大家喜欢。