JS正则RegExp.test()使用注意事项(不具有重复性)
本文实例分析了JS正则RegExp.test()使用注意事项。分享给大家供大家参考,具体如下:
先看下面这段代码:
// 2012-12-12 12:12:12 var regex = /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/g; // true alert(regex.test("2012-12-12 12:12:12")); // false alert(regex.test("2012-12-12 12:12:12"));
执行结果已经在代码注释里了,可以看到:对于同一个正则表达式对象regex,不能重复调用:第一次返回true,第二次就返回false,很显然这种效果不是我们想要的。这是因为RegExp.test()方法,第一次从位置0开始查找,可以匹配;第二次的查找位置就不是0了,说以就不能匹配了。
解决方式挺简单:每次都让test从第0个位置开始匹配就可以了:
// 2012-12-12 12:12:12 var regex = /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/g; // true alert(regex.test("2012-12-12 12:12:12")); regex.lastIndex = 0; // true alert(regex.test("2012-12-12 12:12:12"));
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript
正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript正则表达式技巧大全》、《JavaScript替换操作技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript中json操作技巧总结》、《JavaScript错误与调试技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
相关推荐
-
注意 JavaScript 中 RegExp 对象的 test 方法
JavaScript 中的 RegExp 对象用于正则表达式相关的操作,这个对象提供了一个方法 test 来判定某个字符串是否满足某个 pattern. 返回值是 true/false. 今天我碰到了一个问题: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 这里两个测试的字符串应该都满足正则表达式中的模式,返回 true. 可是测试结果却依次是:true, false. 我估计问题的原因可能是因为 RegExp 对象是有状态的,并且在 test 方法的执行时会在某个步骤中利用到状态
-
浅谈regExp的test方法取得的值变化的原因及处理方法
1.JavaScript 正则表达式对象RegExp的test方法,用于检测一个字符串是否匹配某个模式. 字面量定义RegExp对象:var re = /pattern/attributes,其中attributes可以是g,i,m: 阅读以下程序: <script type="text/javascript"> var str = 'abc123'; var re = /^abc/g ; var result1 = re.test(str); var result2 =
-
JS正则RegExp.test()使用注意事项(不具有重复性)
本文实例分析了JS正则RegExp.test()使用注意事项.分享给大家供大家参考,具体如下: 先看下面这段代码: // 2012-12-12 12:12:12 var regex = /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/g; // true alert(regex.test("2012-12-12 12:12:12")); // false alert(regex.test("2012-12-12 12:12:12")); 执
-
JS正则(RegExp)判断文本框中是否包含特殊符号
前言 有时,我们希望判断文本框中用户输入的字符是否含有特殊符号(*/#$@),就像用户注册时密码框的填写. demo 利用 RegExp 对象,能很优雅的实现以上需求: // even(文本框内容) function (even) { // 规则对象(flag) var flag = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<><>/?~!@#¥--&*()--|{}[]'::""'.,.? ]&
-
浅谈JS正则RegExp对象
目录 1.RegExp对象 2.语法 2.1 定义 2.2 修饰符 2.3 方括号 2.4 元字符 2.5 量词 2.6 方法 1.RegExp对象 正则表达式是描述字符模式的对象. 正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具. 参考教材:w3cschool | JavaScript RegExp 对象 2.语法 2.1 定义 当使用 构造函数 创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \) /* 比如,以下两种方式的定义是等价的 */ // 构造函
-
浅谈js正则字面量//与new RegExp的执行效率
前几天谈了正则匹配 js 字符串的问题:<js 正则学习小记之匹配字符串> 和 <js 正则学习小记之匹配字符串优化篇>. 里面讲到了优化正则起到提升性能的问题,但是能提升多少呢? 于是我去测试了,发现TMD几乎微乎其微,我用1千字符串进行100万次匹配测试,优不优化根本没区别. 这不科学,我白看了这么多天正则,上天这是在玩弄我么. 突然我想到了 compile 方法,然后去测试了下,奇迹出现了,果然优化过的快了不少. 但这是为什么呢? 于是我翻阅资料,在 MDN 上找到了 Reg
-
JS正则表达式一条龙讲解(从原理和语法到JS正则)
正则啊,就像一座灯塔,当你在字符串的海洋不知所措的时候,总能给你一点思路:正则啊,就像一台验钞机,在你不知道用户提交的钞票真假的时候,总能帮你一眼识别:正则啊,就像一个手电筒,在你需要找什么玩意的时候,总能帮你get你要的东西... -- 节选自 Stinson 同学的语文排比句练习<正则> 欣赏了一段文学节选后,我们正式来梳理一遍JS中的正则,本文的首要目的是,防止我经常忘记正则的一些用法,故梳理和写下来加强熟练度和用作参考,次要目的是与君共勉,如有纰漏,请不吝赐教,良辰谢过. 本文既然取题
-
详解JS正则replace的使用方法
在讲replace的高级应用之前,我们先简单梳理一下JS正则中的几个重要的知识点,以帮助你对基础知识的回顾,然后再讲解JS正则表达式在replace中的使用,以及常见的几个经典案例. 一.正则表达式的创建 JS正则的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\s+)|(\s+$)","g"); //使用直接字面量创建 var regStr = /(^\s+)|(\
-
JS正则获取HTML元素的方法
本文实例讲述了JS正则获取HTML元素的方法.分享给大家供大家参考,具体如下: var html = $("#summaryTemplate").html(); var imageMath = /<img [^<,>]*(?=target-type=("|')replace("|'))[^/,<,>]*\/>/; var scriptMath = /<script [^<,>]*(?=target-type=(&
-
JS正则子匹配实例分析
本文实例讲述了JS正则子匹配.分享给大家供大家参考,具体如下: Javascript中,拆分字符串时可以使用string的的split或者substring.但是使用正则会更灵活和准确,这里是一个子匹配的例子,在页面过滤数据时很有用. var reg = /^\[(\d+)-(\d+)\]$/; var str = "[234-45]"; // now, I want the tow data if (reg.exec(str)) { document.write(RegExp.$1
-
js正则相关知识点专题
1.JS正则表达式一条龙讲解(从原理和语法到JS正则) http://www.jb51.net/article/110516.htm 2.教你轻松记住JS正则表达式 http://www.jb51.net/article/88838.htm 有没有人像小编一样,学了好几遍正则表达式却还是很懵圈,学的时候老明白了,学完了忘光了.好吧,其实还是练的不够,今天就随我来复习一下这傲娇的正则表达式吧. 3.js正则表达式学习和总结(必看篇) http://www.jb51.net/article/9790
-
一个关于JS正则匹配的踩坑记录
最近发现在JS里的正则匹配有一个坑,而且当时很莫名奇妙,一度让我怀疑出现了灵异事件. 下面是踩坑代码 var str=["二七1","二七2","金水","二七3","二七4","二七5"] var reg=new RegExp("二七","g"); for(var i=0;i<str.length;i++){ if(reg.test(str
随机推荐
- GO语言数组和切片实例详解
- 制作bat批处理和任意QQ号聊天!
- SqlServer表死锁的解决方法分享
- 微信小程序 判断手机号的实现代码
- asp.net 票据简单应用
- Ajax的概述与实现过程
- ASP.NET 控件开发系列之图片切换web控件
- 在Gnumeric下使用Python脚本操作表格的教程
- 详解MySQL的limit用法和分页查询语句的性能分析
- php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
- ajax设置async校验用户名是否存在的实现方法
- 电饭锅 蛋糕制作图文教程
- SQL Server附加数据库报错无法打开物理文件,操作系统错误5的图文解决教程
- MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
- C#使用FileSystemWatcher控件实现的文件监控功能示例
- 如何为RecyclerView添加Header和Footer
- C#中this的使用实例分析
- 嵌入式Linux重启QT应用程序的简单办法(基于QT4.8 qws)
- Spring框架初始化解析
- 一步一步跟我学易语言之如何较好的输入程序代码