js中 正則表達式

时间:2023-02-25 13:45:25

正則表達式使用具体解释

  简单介绍

  简单的说,正則表達式是一种能够用于模式匹配和替换的强有力的工具。其作用例如以下:

  測试字符串的某个模式。比如,能够对一个输入字符串进行測试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。

  替换文本。能够在文档中使用一个正則表達式来标识特定文字。然后能够所有将其删除,或者替换为别的文字。

  依据模式匹配从字符串中提取一个子字符串。能够用来在文本或输入字段中查找特定文字。

  基本的语法

  在对正則表達式的功能和作用有了初步的了解之后,我们就来详细看一下正則表達式的语法格式。

  正則表達式的形式一般例如以下:

  /love/  当中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。用户仅仅要把希望查找匹配对象的模式内容放入“/”定界符之间就可以。为了可以使用户更加灵活的定制模式内容。正則表達式提供了专门的“元字符”。所谓元字符就是指那些在正則表達式中具有特殊意义的专用字符。可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。

  较为经常使用的元字符包含: “+”, “*”。以及 “?

”。

  “+”元字符规定其前导字符必须在目标对象中连续出现一次或多次。

  “*”元字符规定其前导字符必须在目标对象中出现零次或连续多次。

  “?

”元字符规定其前导对象必须在目标对象中连续出现零次或一次。

  以下。就让我们来看一下正則表達式元字符的详细应用。

  /fo+/  由于上述正則表達式中包括“+”元字符。表示能够与目标对象中的 “fool”, “fo”, 或者 “football”等在字母f后面连续出现一个或多个字母o的字符串相匹配。

  /eg*/  由于上述正則表達式中包括“*”元字符,表示能够与目标对象中的 “easy”, “ego”, 或者 “egg”等在字母e后面连续出现零个或多个字母g的字符串相匹配。

  /Wil?

/  由于上述正則表達式中包括“?

”元字符,表示能够与目标对象中的 “Win”, 或者“Wilson”,等在字母i后面连续出现零个或一个字母l的字符串相匹配。

  有时候不知道要匹配多少字符。为了能适应这样的不确定性,正則表達式支持限定符的概念。

这些限定符能够指定正則表達式的一个给定组件必需要出现多少次才干满足匹配。

  {n} n 是一个非负整数。匹配确定的 n 次。比如。'o{2}' 不能匹配 "Bob" 中的 'o',可是能匹配 "food" 中的两个 o。

  {n,} n 是一个非负整数。至少匹配 n 次。比如,'o{2,}' 不能匹配 "Bob" 中的 'o'。但能匹配 "foooood" 中的全部 o。

'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。

  {n,m} m 和 n 均为非负整数。当中n <= m。最少匹配 n 次且最多匹配 m 次。比如。"o{1,3}" 将匹配 "fooooood" 中的前三个 o。

'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

  除了元字符之外。用户还能够精确指定模式在匹配对象中出现的频率。比如,/jim {2,6}/ 上述正則表達式规定字符m能够在匹配对象中连续出现2-6次。因此,上述正則表達式能够同jimmy或jimmmmmy等字符串相匹配。

  在对怎样使用正則表達式有了初步了解之后,我们来看一下其他几个重要的元字符的使用方式。

  \s:用于匹配单个空格符,包含tab键和换行符;

  \S:用于匹配除单个空格符之外的全部字符;

  \d:用于匹配从0到9的数字;

  \w:用于匹配字母。数字或下划线字符;

  \W:用于匹配全部与\w不匹配的字符;

  . :用于匹配除换行符之外的全部字符。

  (说明:我们能够把\s和\S以及\w和\W看作互为逆运算)

  以下,我们就通过实例看一下怎样在正則表達式中使用上述元字符。

  /\s+/ 上述正則表達式能够用于匹配目标对象中的一个或多个空格字符。

  /\d000/ 假设我们手中有一份复杂的財务报表,那么我们能够通过上述正則表達式轻而易举的查找到全部总额达千元的款项。

  除了我们以上所介绍的元字符之外。正則表達式中还具有第二种较为独特的专用字符,即定位符。定位符用于规定匹配模式在目标对象中的出现位置。 较为经常使用的定位符包含: “^”, “$”, “\b” 以及 “\B”。

  “^”定位符规定匹配模式必须出如今目标字符串的开头

  “$”定位符规定匹配模式必须出如今目标对象的结尾

  “\b”定位符规定匹配模式必须出如今目标字符串的开头或结尾的两个边界之中的一个

  “\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内,

  即匹配对象既不能作为目标字符串的开头,也不能作为目标字符串的结尾。

  相同,我们也能够把“^”和“$”以及“\b”和“\B”看作是互为逆运算的两组定位符。举例来说: /^hell/ 由于上述正則表達式中包括“^”定位符。所以能够与目标对象中以 “hell”, “hello”或“hellhound”开头的字符串相匹配。 /ar$/ 由于上述正則表達式中包括“$”定位符。所以能够与目标对象中以 “car”, “bar”或 “ar” 结尾的字符串相匹配。 /\bbom/ 由于上述正則表達式模式以“\b”定位符开头,所以能够与目标对象中以 “bomb”, 或 “bom”开头的字符串相匹配。/man\b/ 由于上述正則表達式模式以“\b”定位符结尾。所以能够与目标对象中以
“human”, “woman”或 “man”结尾的字符串相匹配。

  为了可以方便用户更加灵活的设定匹配模式,正則表達式同意使用者在匹配模式中指定某一个范围而不局限于详细的字符。

比如:

  /[A-Z]/  上述正則表達式将会与从A到Z范围内不论什么一个大写字母相匹配。

  /[a-z]/  上述正則表達式将会与从a到z范围内不论什么一个小写字母相匹配。

  /[0-9]/  上述正則表達式将会与从0到9范围内不论什么一个数字相匹配。

  /([a-z][A-Z][0-9])+/ 上述正則表達式将会与不论什么由字母和数字组成的字符串。如 “aB0” 等相匹配。

  这里须要提醒用户注意的一点就是能够在正則表達式中使用 “()” 把字符串组合在一起。

“()”符号包括的内容必须同一时候出如今目标对象中。因此,上述正則表達式将无法与诸如 “abc”等的字符串匹配。由于“abc”中的最后一个字符为字母而非数字。

  假设我们希望在正則表達式中实现类似编程逻辑中的“或”运算。在多个不同的模式中任选一个进行匹配的话。能够使用管道符 “|”。

比如:/to|too|2/ 上述正則表達式将会与目标对象中的 “to”, “too”, 或 “2” 相匹配。

  正則表達式中另一个较为经常使用的运算符,即否定符 “[^]”。与我们前文所介绍的定位符 “^” 不同,否定符 “[^]”规定目标对象中不能存在模式中所规定的字符串。

比如:/[^A-C]/ 上述字符串将会与目标对象中除A,B,和C之外的不论什么字符相匹配。

一般来说。当“^”出如今 “[]”内时就被视做否定运算符;而当“^”位于“[]”之外。或没有“[]”时。则应当被视做定位符。

  最后,当用户须要在正則表達式的模式中增加元字符,并查找其匹配对象时,能够使用转义符“\”。比如:/Th\*/  上述正則表達式将会与目标对象中的“Th*”而非“The”等相匹配。

  在构造正則表達式之后,就能够象数学表达式一样来求值,也就是说。能够从左至右并依照一个优先级顺序来求值。优先级例如以下:

  1.\ 转义符

  2.(), (?:), (?=), [] 圆括号和方括号

  3.*, +, ?, {n}, {n,}, {n,m} 限定符

  4.^, $, \anymetacharacter 位置和顺序

  5.|“或”操作

js中 正則表達式的更多相关文章

  1. C&plus;&plus;11中正則表達式測试

    VC++2010已经支持regex了, 能够用来编译下述代码. #include <string> #include <regex> #include <iostream ...

  2. JAVA中正則表達式总结

    昨天,我的朋友请教我正則表達式.我也好久没有写过正則表達式了,昨天刚好看了下如鹏网创始人杨中科老师关于正則表達式的解说.使我加深了正則表達式的印像.现我把他总结下: 很多语言,包含Perl.PHP.P ...

  3. 鸟书shell 学习笔记&lpar;二&rpar; shell中正則表達式相关

    通配符与正則表達式的差别 通配符是bash原生支持的语法,正則表達式是处理字符串的一种表示方式, 正則表達式须要支持的工具支持才干够 语系设置 : export LANG=C grep alias 设 ...

  4. JAVA中正則表達式总结(具体解释及用途)

    很多语言,包含Perl.PHP.Python.JavaScript和JScript,都支持用正則表達式处理文本,一些文本编辑器用正則表達式实现高级"搜索-替换"功能.所以JAVA语 ...

  5. jsp urlrewrite 中正則表達式不包括某个字符串写法

    因在程序中须要做城市间跳转,可是页面中包括的css.scripts和图片等路径是要排除在外的. 这就须要在正则中指定当遇到哪些 字符时须要略过. 正则例如以下: /((? !css)(?!script ...

  6. JavaScript正則表達式知识汇总

    Js 正則表達式知识汇总 正則表達式: 1.什么是RegExp?RegExp是正則表達式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegE ...

  7. js正則表達式--验证表单

    检測手机号码:/0? (13|14|15|18)[0-9]{9}/ 检測username:(数字,英文,汉字.下划线.中横线):/^[A-Za-z0-9_\-\u4e00-\u9fa5]+$/ pas ...

  8. JavaScript之正則表達式入门

    <html> <head><title>Js String 正則表達式</title><script>//边界符 js 中直接定义须要边界符 ...

  9. 使用正則表達式的格式化与高亮显示json字符串

    使用正則表達式的格式化与高亮显示json字符串 json字符串非常实用,有时候一些后台接口返回的信息是字符串格式的,可读性非常差,这个时候要是有个能够格式化并高亮显示json串的方法那就好多了,以下看 ...

随机推荐

  1. Linux sudo

    200 ? "200px" : this.width)!important;} --> 介绍 本篇文章主要介绍sudo配置和用法,为了给某个用户控制权限比如执行某个命令或者关 ...

  2. LYDSY模拟赛day3 涂色游戏

    /* 非常好的题 */ #include <cstdio> #include <iostream> #include <cstdlib> #include < ...

  3. 设计模式——单例模式 (C&plus;&plus;实现)

    单例模式也称为单件模式.单子模式,可能是使用最广泛的设计模式.其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享.有很多地方需要这样的功能模块,如系统的日志输出,G ...

  4. Gulp入门与解惑

    Gulp简介 Gulp.js 是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务.Gulp.js是基于 Node.js构建的,利用Node.js流的威力,你可以快速构建项目. 安装 ...

  5. SVN报Previous operation has not finished&semi; run 'cleanup'&

    做着项目突然SVN报Previous operation has not finished; run 'cleanup' if it was interrupted,进度又要继续,烦.百度一下发现很多 ...

  6. Linux 内核的定时机制实验

    参考链接: Linux struct itimerval用法: http://blog.csdn.net/hbuxiaofei/article/details/35569229 Linux定时器实验: ...

  7. CSS 点击事件

    :active 伪类向激活(在鼠标点击与释放之间发生的事件)的元素添加特殊的样式. 这个伪类应用于处于激活状态的元素.最常见的例子就是在 HTML 文档中点击一个超链接:在鼠标按钮按下期间,这个链接是 ...

  8. Hive Tuning&lpar;五&rpar; 标准调优清单

    Hive的标准调优清单,我们可以对照着来做我们的查询优化!

  9. Nginx访问限制模块limit&lowbar;conn&lowbar;zone 和limit&lowbar;req&lowbar;zone配置使用

    nginx可以通过limit_conn_zone 和limit_req_zone两个组件来对客户端访问目录和文件的访问频率和次数进行限制,另外还可以善用进行服务安全加固,两个模块都能够对客户端访问进行 ...

  10. C&plus;&plus;异常安全

    转自:http://www.cnblogs.com/zgfLawliet/p/3417308.html   异常安全的代码是指,满足两个条件 1异常中立性 : 是指当你的代码(包括你调用的代码)引发异 ...