正则表达式字符类加深理解

正则表达式字符类加深理解:
一.基本概念:
字符类相对来说是比较简单的,但是也有可能由于理解不够深入或者大意造成一些误区,下面再来做一下介绍。
字符类[]能够匹配包含在中括号中的一系列字符中的任意一个,但是匹配的结果只能够是其中的一个而不是多个,例如:

var str="abcd"; var reg=/[abcd]/; console.log(str.match(reg));

以上正则表达式只能够匹配字符"a"。
二.使用连字符"-":
字符类可以使用连字符"-"来确定一个匹配的范围,当然使用连字符也是有原则的,前后两个字符是有顺序的,如果使用相同的编码,后面的字符码位应大于或等于前面字符的码位,例如:

[0-9]//正确的
[9-0]//错误的

三.字符类中的特殊字符是否需要转义:
大部分在正则中有特殊意义的字符在匹配其本身时需要进行转义,例如"."可以匹配任意字符,"$"用来匹配字符串的结尾,在字符类中就不需要进行转义,代码实例如下:

var str="abc.efcd"; var reg=/c\./g; console.log(str.match(reg));

以上正则中,在点号前面添加了反斜杠进行转义,所以只会匹配字符串"c.",否则也会匹配"cd"。
但是在字符类中绝大多数元字符都不需要进行转义,必须要进行转义的字符只有"\",字符"^"和"-"是否需要转义要看具体的应用场景,代码实例如下:
实例一:

var str="ab$c.efcd"; var reg=/[$.]/g; console.log(str.match(reg));

以上代码可以匹配字符串中的"$"和"."本身。
实例二:

var str="a\\b$c.efcd"; var reg=/[\\$.]/g; console.log(str.match(reg));

以上代码为匹配反斜杠必须要进行转义。
实例三:

var str="ab-c^569"; var reg=/[\^0\-9]/g; console.log(str.match(reg));

在以上代码中"^"和"-"已经不具有特殊意义了,而是表示它们本身,因为使用了转义。
实例四:

var str="ab-c^569"; var reg=/[-a^c0]/g; console.log(str.match(reg));

上面的代码"-"和"^"就没有进行转义,这是因为它们所在点位置使它们失去了特殊意义。
字符类中也可以使用转义字符:
代码实例如下:

var str="abc<|12"; var reg=/[\w]/g; console.log(str.match(reg));

特别注意:\b在字符类外表示单词边界,但是在字符类内[\b]表示退格符。
四.排除型字符类:
[^]是一个排除型字符类,用以匹配不在中括号中的任一字符,当然匹配结果也只能够是一个字符,例如:

[^antzone]

以上正则可以匹配除了字符"a"、"n"、"t"、"z"、"o"、"n"和"e"之外的任意字符。
排除型字符类同样也支持连字符"-",例如:

[^0-9]

可以匹配除了数字之外的其他字符。

时间: 2024-09-14 16:29:49

正则表达式字符类加深理解的相关文章

JavaScript 正则表达式 重复 转义 字符类详解

正则表达式的重复字符:字符 含义 {n,m} 匹配前一项至少n次,但是不能超过m次 {n,} 匹配前一项n次,或更多次 {n} 匹配前一项恰好n次 ? 匹配前一项0次或1次,也就是说前一项是可选的.相当于{0,1} + 匹配前一项1次或多次,相当于{1,} * 匹配前一项0次或多次,相当于{0,} 示例:  代码如下 复制代码 //所有十位数,到四位数,包括:0000 var pattern = /d{2,4}/; //如下正则内容匹配ab,abc,abcccc var pattern = /a

一个在Flash里面使用的正则表达式的类

正则 一个在Flash里面使用的正则表达式的类,使用这个类的原因是FLASH里面对文本输入检测要求不高,例如就不能检测输入的邮件格式是否正确: class RegExp {  public var const:String = null;  public var source:String = null;  public var global:Boolean = false;  public var ignoreCase:Boolean = false;  public var multilin

PHP 转义正则表达式字符: preg

 preg_quote - 转义正则表达式字符 string preg_quote ( string $str [, string $delimiter = NULL ] ) preg_quote()需要参数str并向其中 每个正则表达式语法中的字符前增加一个反斜线. 这通常用于你有一些运行时字符串 需要作为正则表达式进行匹配的时候. 正则表达式特殊字符有: . + * ? [ ^ ] $ ( ) { } = ! < > | : - 参数 str 输入字符串 delimiter 如果指定了可选

java-android正则表达式 字符串匹配

问题描述 android正则表达式 字符串匹配 现在在做一个功能,匹配编辑框内字符串 符合"数字+英文字母大小写+符号" 我先写了个下面的表达式在纯JAVA程序里跑没问题,放到android程序里就出问题了,比如"+",加号就不行了 Pattern pattern = Pattern.compile("[A-Za-z0-9p{Punct}]*"); 请问如何写一个符合"数字+英文大小写+符号"的正则表达式? 解决方案 d+[a

数据-百度地图坐标类和理解类问题

问题描述 百度地图坐标类和理解类问题 问题 1.:new BMap.Map(""allmap""{minZoom:8maxZoom:16}) 中的 allmap 是不是特定的: 为什么改过之后就出不来地图?请教 2.: 我想做一个根据中心点 方圆500米 的距离 显示数据库中已有数据的 坐标 解决方案 那个是你容器的id,你要显示在哪个容器就设置哪个容器的id,不是特定的,注意你的js代码要放在dom对象下或者domready事件中,防止找不到对象 你解码得到中心点

Android开发中超好用的正则表达式工具类RegexUtil完整实例

本文实例讲述了Android开发中超好用的正则表达式工具类RegexUtil.分享给大家供大家参考,具体如下: /*********************************************** * 正则表达式工具 * * @author chen.lin * @version 1.0 ************************************************/ public class RegexUtil { /** * 车牌号码Pattern */ pub

C#正则表达式类Match和Group类的理解

正则表达式可以看做一种有特定功能的小型编程语言,在一段文本中定位子字符串.利用正则表达式可以快速地分析大量的文本以找到特定的字符模式:提取.编辑.替换或删除文本子字符串:或将提取的字符串添加到集合.正则表达式的基本语法可参见:深入浅出之正则表达式(一),深入浅出之正则表达式(二). C#命名空间System.Text.RegularExpressions提供了支持正则表达式操作的类.这些类主要包括Regex,MatchCollection,Match,GroupCollection,Group,

java 正则表达式 pattern类 matcher类详解

一.正则表达式基础知识 我们先从简单的开始.假设你要搜索一个包含字符"cat"的字符串,搜索用的正则表达式就是"cat".如果搜索对大小写不敏感,单词"catalog"."Catherine"."sophisticated"都可以匹配.也就是说: 1.1 句点符号 假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以"t"字母开头,以"n"字母结束.另外

PHP中正则表达式字符编码表示

str = '中华人民共和国123456789abcdefg'; echo preg_match("/^[\u4e00-\u9fa5_a-zA-Z0-9]{3,15}",strName); 运行一下上面这段代码,看会有什么提示信息? Warning: preg_match(): Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 3 in F:\wwwroot\php