正則表達式使用具体解释

  简单介绍

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

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

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

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

  基本的语法

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

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

  /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++11中正則表達式測试

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

  2. JAVA中正則表達式总结

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

  3. 鸟书shell 学习笔记(二) 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. 【Demo 0005】Android 资源

    本章学习要点:        1.  了解Android中资源用途:        2.  掌握资源使用通用规则:        3.  掌握具体资源使用方法; 一.Android资源       a ...

  2. TsFltMgr.sys其原因是,该系统蓝屏QQ计算机管理器!

    同事一WindowsXP系统,正常执行,关闭后,第二天无法启动.详细症状为: (1)安全模式以及带网络功能的安全模式都能够进入. (2)正常模式.还没出现WindowXP滚动栏就開始重新启动: (3) ...

  3. Ajax - 异步调用后台程序 -JSON

    在ASP.NET使用ajax时基本上每个操作都要新建一个.ashx处理程序,页面很多,每个页面的操作也很多,这样的话项目就会产生新建很多很多的.ashx页面,能不能把方法写在后台中,然后Jquery直 ...

  4. clearcase 中一些概念和操作

    clearcase 中一些概念和操作 视图 常用命令 ClearCase 安装和使用的一些FAQ 参考 ClearCase具体的说是做配置管理的工具,只是SCM管理工具其中的一种.是RATIONAL公 ...

  5. SPOJ375(树链剖分)

    题目:Query on a tree 题意:给定一棵树,告诉了每条边的权值,然后给出两种操作: (1)把第i条边的权值改为val (2)询问a,b路径上权值最大的边 分析:本题与HDU3966差不多, ...

  6. HTML事件

    Media 事件

  7. Dom4j和Xpath(转)

    1.DOM4J简介 DOM4J是 dom4j.org 出品的一个开源 XML 解析包.DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和JAXP. DOM4J使 ...

  8. Codeforces Round #350 (Div. 2)解题报告

    codeforces 670A. Holidays 题目链接: http://codeforces.com/contest/670/problem/A 题意: A. Holidays On the p ...

  9. How to write simple HTTP proxy with Boost.Asio

    How to write simple HTTP proxy with Boost.Asio How to write simple HTTP proxy with Boost.Asio Russia ...

  10. (step5.1.2)hdu 1305(Immediate Decodability——字典树)

    题目大意:输入一系列的字符串,判断这些字符串中是否存在其中的一个字符串是另外一个字符串的前缀.. 如果是,输出Set .. is not immediately decodable 否则输出Set . ...