正则表达式(regular expression)对象包含一个正则表达式模式(pattern)。它具有用正则表达式模式去匹配或代替一个字符串(string)中特定字符(或字符集合)的属性(properties)和方法(methods)。 要为一个单独的正则表达式添加属性,可以使用正则表达式构造函数(constructor function),无论何时被调用的预设置的正则表达式拥有静态的属性(the predefined RegExp object has static properties that are set whenever any regular expression is used, 我不知道我翻得对不对,将原文列出,请自行翻译)。

创建:
一个文本格式或正则表达式构造函数
文本格式: /pattern/flags
正则表达式构造函数: new RegExp("pattern"[,"flags"]);
参数说明:
pattern -- 一个正则表达式文本
flags -- 如果存在,将是以下值:
g: 全局匹配
i: 忽略大小写
gi: 以上组合
[注意] 文本格式的参数不用引号,而在用构造函数时的参数需要引号。如:/ab+c/i new RegExp("ab+c","i")是实现一样的功能。
在构造函数中,一些特殊字符需要进行转意(在特殊字符前加"\")。如:re = new RegExp("\\w+")

正则表达式中的特殊字符

字符 含意
\ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。
-或-
对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*"。

^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"
$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"
* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa
+ 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa
? 匹配前面元字符0次或1次,/ba*/将匹配b,ba
(x) 匹配x保存x在名为$1...$9的变量中
x|y 匹配x或y
{n} 精确匹配n次
{n,} 匹配n次以上
{n,m} 匹配n-m次
[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)
[^xyz] 不匹配这个集合中的任何一个字符
[\b] 匹配一个退格符
\b 匹配一个单词的边界
\B 匹配一个单词的非边界
\cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M
\d 匹配一个字数字符,/\d/ = /[0-9]/
\D 匹配一个非字数字符,/\D/ = /[^0-9]/
\n 匹配一个换行符
\r 匹配一个回车符
\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等
\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/
\t 匹配一个制表符
\v 匹配一个重直制表符
\w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9]
\W 匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。

说了这么多了,我们来看一些正则表达式的实际应用的例子:

E-mail地址验证:
function test_email(strEmail) {
var myReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/;
if(myReg.test(strEmail)) return true;
return false;
}
HTML代码的屏蔽
function mask_HTMLCode(strInput) {
var myReg = /<(\w+)>/;
return strInput.replace(myReg, "<$1>");
}

正则表达式对象的属性及方法
  预定义的正则表达式拥有有以下静态属性:input, multiline, lastMatch, lastParen, leftContext, rightContext和$1到$9。
其中input和multiline可以预设置。其他属性的值在执行过exec或test方法后被根据不同条件赋以不同的值。
许多属性同时拥有长和短(perl风格)的两个名字,并且,这两个名字指向同一个值。(JavaScript模拟perl的正则表达式)

正则表达式对象的属性 属性 含义
$1...$9 如果它(们)存在,是匹配到的子串
$_ 参见input
$* 参见multiline
$& 参见lastMatch
$+ 参见lastParen
$` 参见leftContext
$’          参见rightContext
constructor    创建一个对象的一个特殊的函数原型
global       是否在整个串中匹配(bool型)
ignoreCase     匹配时是否忽略大小写(bool型)
input        被匹配的串
lastIndex     最后一次匹配的索引
lastParen     最后一个括号括起来的子串
leftContext    最近一次匹配以左的子串
multiline     是否进行多行匹配(bool型)
prototype     允许附加属性给对象
rightContext    最近一次匹配以右的子串
source       正则表达式模式
lastIndex     最后一次匹配的索引

正则表达式对象的方法
方法 含义
compile      正则表达式比较
exec        执行查找
test        进行匹配
toSource      返回特定对象的定义(literal representing),其值可用来创建一个新的对象。重载Object.toSource方法得到的。
toString      返回特定对象的串。重载Object.toString方法得到的。
valueOf      返回特定对象的原始值。重载Object.valueOf方法得到

例子
Smith, John
将输出"Smith, John"

转载自 闪动联盟http://www.85flash.com/Get/JavaScript/2006-3-28/180633705_2.htm

转载于:https://www.cnblogs.com/pyt5208/archive/2007/11/03/947775.html

JavaScript中的正则表达式解析相关推荐

  1. JavaScript中的正则表达式解析(一)——数字的匹配

    前言 说到让人头疼的,莫过于正则表达式了,谁能告诉我那一堆看起来像乱码的东西,到底匹配的是什么(抓狂脸!),不用心急,不用焦躁,下面我们就来彻底的了解一下正则表达式.--妈妈再也不用担心我看不懂正则表 ...

  2. 52 JavaScript中的正则表达式

    技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.什么是正则表达式 正则表达是(regular expression)是用于匹配字符串中 ...

  3. 十、JavaScript中的正则表达式(六)

    @Author:Runsen @Date:2020/5/26 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排 ...

  4. JavaScript中的预解析(变量提升)介绍!

    今天小千为大家介绍一下JavaScript中的预解析(变量提升).从什么是预解析及变量的预解析和函数的预解析及加载流程进行学习(注意:我们这里说的ES5中的预解析). 什么是解析 首先代码执行肯定需要 ...

  5. Javascript中使用正则表达式进行数据验证

    Javascript中使用正则表达式进行数据验证 <script language="javascript">  function checkMobile(mobile ...

  6. JavaScript中的正则表达式详解

    正则表达式(Regular Expression)是一门简单语言的语法规范,是强大.便捷.高效的文本处理工具,它应用在一些方法中,对字符串中的信息实现查找.替换和提取操作. 正则表达式在人们的印象中可 ...

  7. qq号的正则表达式html,JavaScript中的正则表达式使用及验证qq号码的正则

    废话不多说了,直接给大家贴正则表达式代码了. function myValid() { var errorMsg = ""; var res = true; //拿到要验证的值. ...

  8. javascript中的正则表达式学习

    一.前言 关于正则表达式自身的语法这里不做过多介绍(详情可参见http://www.php100.com/manual/unze.html),这里仅仅解释javascript中和正则表达式相关的几个方 ...

  9. 【一次搞懂】JavaScript中的正则表达式

    一.什么是正则表达式 正则表达式的概念: 计算机科学的一个概念.正则表达式通常被用来检索.替换那些符合某个模式(规则)的文本 在JS中,正则表达式属于对象的一种: typeof /\d+/ " ...

最新文章

  1. 吃鸡服务器炸了会显示什么,绝地求生服务器再爆炸,还能不能好好吃鸡了?
  2. 浅谈.NET(C#)与Windows用户账户信息的获取
  3. pycharm和python区别-一些 PyCharm 的使用和设置建议
  4. bzoj2002Bounce 弹飞绵羊
  5. 中国合成橡胶行业竞争趋势与运营展望规划分析报告2022年
  6. 【小白学习PyTorch教程】八、使用图像数据增强手段,提升CIFAR-10 数据集精确度
  7. ASP.NET Web Pages 的冲突版本问题
  8. java调用、执行groovy代码
  9. 实现DDD领域驱动设计: Part 4
  10. 【ES8(2017)】Object 扩展 values() / entries() / getOwnPropertyDescriptors()
  11. linux系统uptime,top命令详解
  12. 删除或添加最大化、最小化按钮 - 回复 Tommy the CAT 的问题
  13. (转)Mahout Kmeans Clustering 学习
  14. 未能打开组策略对象 您可能没有合适的权限
  15. 思科网络设备命令大全
  16. [资源下载] chromium OS 镜像下载
  17. 支付宝登录java_支付宝登录java和android
  18. DAX: 复购率计算
  19. 页面浏览pdf或图片iframe
  20. wangeditor上传本地视频的方法

热门文章

  1. python max函数_Python3
  2. HashSet中的add()方法( 三 )(详尽版)
  3. 病虫害模型算法_基于深度学习的目标检测算法综述
  4. 贝塞尔结合CAShapeLayer绘制路线,CABasicAnimation实现的小动画
  5. iOS 一行命令发布 Pod 框架
  6. Algs4-1.1.13编写一段代码,打印出一个M行N列的二维数组的转置(交换行和列)
  7. 全球SDN测试认证中心发布OpenDaylight测试报告
  8. 如何让phpmyadmin输入密码再进入
  9. 浅谈HTTP中Get与Post的区别
  10. lamp-安装脚本-修订版2