重温JavaScript中的正则表达式 js学习笔记

一、创建正则表达式

  创建正则表达式和创建字符串类似 , 创建正则表达式提供了两种方法 , 一种是采用 new运算符,另一个是采用字面量方式。

代码如下:

  var dog = new RegExp('dog'); // 第一个参数字符串
  var dog = new RegExp('dog', 'ig'); // 第二个参数可选模式修饰符

var dog = /dog/;
  var dog = /dog/ig; //字面量方式。


RegExp 对象包含两个方法 : test() 和 exec() , 功能基本相似 , 用于测试字符串匹配 。

   test()方法在字符串中查找是否存在指定的正则表达式并返回布尔值 , 如果存在则返回 true , 不存在则返回 false 。

   exec() 方法也用于在字符串中查找指定正则表达式,如果 exec() 方法执行成功,则返回包含该查找字符串的相关信息数组。如果执行失败,则返回 null 。

  虽然创建正则表达式对象比较简单,但真正复杂的却是用正则语法描述的模式信息。接下来,我们分几个小节分别探讨一些模式:

二、字符串的正则表达式方法

例如:


代码如下:

var myPattern = /dog/ig;var theStr = "this is a dog,that is a dog!"console.log(theStr.match(myPattern)); //["dog", "dog"]
var myPattern = /dog/i;var theStr = "this is a dog,that is a dog!"console.log(theStr.search(myPattern)) //10
var myPattern = /dog/i; //注意没有设置全局,如果设置全局,结果为:this is a Cat,that is a Cat!var theStr = "this is a dog,that is a dog!"console.log(theStr.replace(myPattern,"Cat")); //this is a Cat,that is a dog!
var myPattern = /\s/ig;var theStr = "this is a dog,that is a dog!"console.log(theStr.split(myPattern)); //["this", "is", "a", "dog,that", "is", "a", "dog!"],这个加不加全局g没有影响!

二、直接量字符
在正则表达式中,所有字母字符和数字都是按照直接量与自身匹配的。同时,正则表达式还通过反斜杠“\”加字母来支持某些非字母的字符。见下面的匹配列表:
字符        匹配
字母和数字     自身 例如: /a/ 匹配 字母 a
\o         NUL字符
\t         制表符
\n         换行符
\v         垂直制表符
\f         换页符
\r          回车

三、字符类

将单独的直接字符放进[]内,就组成了字符类。一个字符类和它所包含的任何字符都匹配。

  例如:/[abc]/ 与abc三个字母的任意一个匹配。
同时,还可以定义否定字符类。利用^字符。例如:/[^abc]/匹配a b c以外的所有字符。
另,可以用连字符号确定一个字符的范围。例如:/[a-z]/匹配a到z。要匹配所有拉丁字母集,可以使用/[a-zA-Z0-9]/
字符      匹配

.        除换行符和其他Unicode行终止符之外的任意字符
\w       任何ASCII单字字符,等价于[a-zA-Z0-9_]
\W       任何非ASCII单字字符,等价于[^a-zA-Z0-9_]
\s        任何Unicode空白符
\S        任何非Unicode空白符
\d        任何ASCII数字,等价于[0-9]
\D        任何非ASCII数字,等价于[^0-9]
[\b]       退格直接量
  注意,方括号[]内也可以使用上面的转义序列。例如/[\s\d]/ 匹配任意的空白符或数字。

四、重复

  根据第二节涉及到的知识,我们可以把两位数表述成/\d\d/,但,如果重复次数过多,肯定就不能这样写了。
字符      匹配
{n,m}     匹配前一项至少n次,但不超过m次
{n,}      匹配前一项大于等于n次

{n}       恰好n次
?        0次或1次,
+       1次或者多次,等价于{1,}
*        0次或多次
  例如:/\d{2,4}/ 2个、3个或4个数字。   /\w{3}\d?/ 匹配3个字符,并有一个可选的数字。
注意:/a*/实际上与bbbb是匹配的,因为0个或多个a与bbbb匹配。

五、锚字符

六、选择、分组和引用

  1、字符“|”用于分隔选择的字符。例如:/ab|cd|ef/匹配字符串ab或cd或ef。 /\d{3}|[a-z]{4}/匹配3个数字或4个小写字母

  2、"()"作用是把单独的项目组合成子表达式。例如:/java(script)?/ 匹配java,其后可以有script,也可以没有。

注意,在分组中,$1、$2、$3分别表示第几个分组中的内容。

  例如:

var myPattern = /(dog).*(cat)/;var theStr = "this is a dog,that is a cat!"myPattern.exec(theStr);console.log(RegExp.$2 + " " + RegExp.$1); //cat dog console.log(RegExp.lastMatch); //最后一次匹配的项:dog,that is a cat

七、贪婪与惰性


例如:


代码如下:

var myPattern = /[a-z]+/;var theStr = "this is a dog,that is a cat!"console.log(theStr.replace(myPattern, "a")); //a is a dog,that is a cat! 贪婪的,把this都匹配了!
var myPattern = /[a-z]+?/;var theStr = "this is a dog,that is a cat!"console.log(theStr.replace(myPattern, "a")); //ahis is a dog,that is a cat! 非贪婪的,只把this中的t匹配了!

最后,RegExp实例继承的toLocaleString()和toString()方法都会返回正则表达式的字面量,即/abc/

(0)

相关推荐

  • javascript中使用正则表达式进行字符串验证示例

    var reg=/正则表达式/: boolean reg.test(要验证的字符串); js引擎会将/正则表达式/""转换成一个RegExp对象,当字符串满足正则表达式的要求事,返回true. 我写的一个表达式验证示例:功能如下: 用户名,不能为空 密码6为数字 密码确认,两次输入密码必须相同 身份证号码必须是15位,或者是18位,最末尾也可以是X(该功能还没有写,有时间再补上) 复制代码 代码如下: <!DOCTYPE html> <html> <hea

  • JavaScript 正则表达式 验证整数、小数、实数、有效位小数最简单

    说明:IE6.0.IE7.0.IE8.0.Firefox/3.0.11下测试通过 验证数字最简单正则表达式大全 输入完按回车后即可验证!(自认为最简单!) 正整数: 负整数: 整 数: 正小数: 负小数: 小 数: 实 数: 保留1位小数: 保留2位小数: 保留3位小数: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 出处:http://blog.csdn.net/xxd851116

  • JavaScript基于正则表达式的数字判断函数

    1.下面列出了一些判读数值类型的正则表达式 复制代码 代码如下: "^\\d+$" //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$" //正整数 "^((-\\d+)|(0+))$" //非正整数(负整数 + 0) "^-[0-9]*[1-9][0-9]*$" //负整数 "^-?\\d+$" //整数 "^\\d+(\\.\\d+)?$" //非负浮点数(正浮

  • javascript RegExp对象(正则表达式)

    使用RegExp的显式构造函数,语法为:new RegExp("pattern"[,"flags"]). 使用RegExp的隐式构造函数,采用纯文本格式:/pattern/[flags]. pattern部分为要使用的正则表达式模式文本,是必须的.在第一种方式中,pattern部分以JavaScript字符串的形式存在,需要使用双引号或单引号括起来:在第二种方式中,pattern部分嵌套在两个"/"之间,不能使用引号. flags部分设置正则表达

  • javascript正则表达式基础篇

    正则表达式:语法:/expression/,斜杠表示起始位置 创建方式: 1.var regObj = new RegExp("pattern",[,"flags"]);        pattern:必选项,正则表达式的字符串:        flags:可选项,一些标志组合.    2.var regObj = /pattern/[flags];该方式不能用引号将pattern和flags括起来. 正则表示对象RegExp对象的方法: exec:检索字符中是正则

  • JavaScript正则表达式验证中文实例讲解

    JavaScript经常会验证中文,这里提供两个例子: Javascript代码: 复制代码 代码如下: /** *A simple example */ function ischinese(temp){ var re = /[^u4e00-u9fa5]/; if(re.test(temp)) return false; return true; } <p>/** *校验字符串是否为中文 *返回值: *如果为空,定义校验通过, 返回true *如果字串为中文,校验通过, 返回true *如果

  • JavaScript 表单验证正则表达式大全[推荐]

    具体和函数结合的使用方法,还请查看下篇文章 JavaScript 使用正则表达式进行表单验证的示例代码 复制代码 代码如下: 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:ns*r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:< (S*?)[^>]*>.*?

  • javascript中正则表达式反向引用示例介绍

    最近遇到一个需求,传入一个字符串,每三个字符插入一个空格 例: 传入abcd1234 输出 abc d12 34 思考了一下,准备写一个函数如下 复制代码 代码如下: function appendSpace(s) { var length = s.length; var result = ""; var last = 0; for(var i = 3;i<=length;i=i+3,last = last+3) { result = result+s.substring(i-3

  • 经典Javascript正则表达式[优质排版]

    匹配中文字符的正则表达式: 复制代码 代码如下: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内): 复制代码 代码如下: [^\x00-\xff] 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 复制代码 代码如下: String.prototype.len=function(){ return this.replace([^\x00-\xff]/g,"aa").length; } 匹配空行的正则表达式: 复制代码 代码如下: \n[\s|]*\r

  • 如何实现正则表达式的JavaScript的代码高亮

    今天想改一下JS的高亮的配色,憋了一下午憋出了这个这个正则表达式. 下面这老长老长了的玩意儿是个正则表达式,看到了别吓坏了. 复制代码 代码如下: /(\/\/.*|\/\*[\S\s]+?\*\/)|((["'])(?:\\.|[^\\\n])*?\3)|\b(break|continue|do|for|in|function|if|else|return|switch|this|throw|try|catch|finally|var|while|with|case|new|typeof|in

  • 如何使用JavaScript和正则表达式进行数据验证

    数据验证是网络应用软件从客户端接受数据的重要步骤,毕竟,您需要在使用客户数据前确保其符合预期的格式.在网络应用程序中,您可以选择使用特定平台的工具,比如ASP.NET.JSP等等,或者您可以利用客户端JavaScript的优势,JavaScript中的正则表达式可以简化数据验证的工作. 正则表达式 正则表达式是一种模式匹配的工具,它允许您以文字方式来表述模式,因而正则表达式成为了一个验证文本数据的强大工具.除了模式匹配之外,正则表达式还可以用于文字替换.从我在UNIX系统上使用Perl时第一次接

  • 正则表达式--QQ微信、优酷前端 邮箱正则表达式验证 Bug

    拿邮箱验证来说,网上绝大部分人写的邮箱验证正则表达式代码都不能验证这邮箱: i@julying.com,也不能验证 xxxxxx@i.com . 上次我发现youku.com(优酷网)用户注册就有这个问题,见图: 今天发现 QQ微信 也同样有这个问题: 他们都不能验证一个字母的域名或一个字母的用户名. 我认为,他们绝不是故意不让这样的用户注册,而是这样: 很久之前,最初写正则的程序员偷懒了,没有写 这样情况的正则表达式验证, 他当时可能觉得这样的正则比较麻烦,而且可能这样的邮箱实在太少了, 没有

  • JavaScript RegExp 正则表达式对象详细说明

    直接量语法 /pattern/attributes 创建 RegExp 对象的语法: 复制代码 代码如下: var obj=new RegExp(pattern,attributes); 事例1: 复制代码 代码如下: var pattern=/a/; document.write(pattern.exec("asdas")); 事例2: 复制代码 代码如下: var obj=new RegExp("a"); document.write(obj.exec(&quo

  • java正则表达式表单验证类工具类(验证邮箱、手机号码、qq号码等)

    java使用正则表达式进行表单验证工具类,可以验证邮箱.手机号码.qq号码等 复制代码 代码如下: package util; import java.util.regex.Matcher;import java.util.regex.Pattern; /** * 使用正则表达式进行表单验证 *  */ public class RegexValidateUtil {    static boolean flag = false;    static String regex = ""

  • JavaScript 正则表达式使用详细参数

    正则表达式构造函数: new RegExp("pattern"[,"flags"]);  参数说明:  pattern -- 一个正则表达式文本  flags -- 如果存在,将是以下值:  g: 全局匹配  i: 忽略大小写  gi: 以上组合 在构造函数中,一些特殊字符需要进行转意(在特殊字符前加"\").正则表达式中的特殊字符:  字符  含意   \ 转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符&q

  • JavaScript中的正则表达式使用及验证qq号码的正则

    废话不多说了,直接给大家贴正则表达式代码了. function myValid() { var errorMsg = ""; var res = true; //拿到要验证的值. var receiveName = $("#receiveName").val();//姓名 var receiveMobile = $("#tMobile").val();//手机号 var validCode = $("#validCode").

  • javascript中使用正则表达式实现删除字符串中的前后空格

    实例 复制代码 代码如下: <script> var str=" yexj00 "; str=str.replace(/^s*|s*$/g,''); alert(str); </script> 实例 模仿RTrim: 复制代码 代码如下: <script> var str="yexj00 "; str=str.replace(/s*$/g,''); alert(str); </script> 实例 代码以及测试代码如下

  • javascript中匹配价格的正则表达式

    复制代码 代码如下: /^(d*.d{0,2}|d+).*$/ hansir给出的测试代码如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xht

  • JavaScript 正则表达式解析

    JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法. 在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp对象,也可以用 JavaScript 1.2中的新添加的一个特殊语法来创建RegExp对象.就像字符串直接量被定义为包含在引号内的字符一样,正则表达式直接量也被定义为包含在一对斜杠 (/)之间的字符.所以,JavaScript可能会包含如下的代码

随机推荐