什么是正则表达式
正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。
正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。每一门计算机编程语言,都支持正则表达式。正则表达式能够进行数据隐藏,数据采集,数据过滤和数据验证。
扩展资料:
使用正则表达式创建正则对象方法如下:
1.字面量写法-以斜杠表示开始和结束; var regex = /xyz/。
2.内置构造函数生成-通过实例化得到对象;var regex = new RegExp('xyz')。
正则表达式里面字符串含义:
test(str) :判断字符串中是否具有指定模式的子串,返回结果是一个布尔类型的值;exec(str) :返回字符串中指定模式的子串,一次只能获取一个与之匹配的结果。
search(reg) :与indexOf非常类似,返回指定模式的子串在字符串首次出现的位置。
match(reg): 以数组的形式返回指定模式的字符串,可以返回所有匹配的结果。
replace(reg,'替换后的字符') :把指定模式的子串进行替换操作。
split(reg) :以指定模式分割字符串,返回结果为数组。
参考资料来源:百度百科—正则表达式
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
它是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。
扩展资料:
正则表达式的特点是:
1. 灵活性、逻辑性和功能性非常强;
2. 可以迅速地用极简单的方式达到字符串的复杂控制。
3. 对于刚接触的人来说,比较晦涩难懂。
由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。
参考资料:正则表达式-百度百科
.(句点或点)元字符是最简单但最常用的一个字符。它可匹配任何单字符。如果要指定某些模式可包含任意组合的字符,使用句点非常有用,但一定要在特定长度范围内。此外,我们知道表达式将对包含在较长字符串中的所有模式进行匹配,假如只需要精确匹配模式,又该怎么办?这在验证方案中经常出现,例如,要确保用户输入的邮政编码或电话号码的格式正确。使用 ^ 元字符可指定字符串(或行)的开始,使用 $ 元字符可指定字符串(或行)的结束。通过将这些字符添加到模式的开始和结束处,可强制模式仅匹配精确匹配的输入字符串。如果 ^ 元字符用在方括号 [ ] 指定的字符类的开头,也有特殊的含义。具体内容见下。
\ (反斜杠)元字符既可根据特殊含义“转义”字符,也可指定预定义集合元字符的实例。同样,具体内容见下。为了在正则表达式中包括文字样式的元字符,必须使用反斜杠进行“转义”。例如,如果要匹配以“c:\”开始的字符串,可使用:^c:\\。注意,要使用 ^ 元字符指出字符串必须以此模式作为开始,然后用反斜杠元字符转义文字反斜杠。
|(管道)元字符用于交替指定,特别用于在模式中指定“此或彼”。例如,a|b 将匹配包含“a”或“b”的任何输入内容,这与字符类 [ab] 非常类似。
最后,括号 ( ) 用于给模式分组。它允许使用限定符让一个完整模式出现多次。为了便于阅读,或分开匹配特定的输入部分,可能允许分析或重新设置格式。
使用目前提供的工具可以完成很多工作。但是,要使用 [0-9] 表示模式中的每个数值数字,或(更糟)使用 [0-9a-zA-Z]表示任何字母数字字符,还有一段相当漫长的过程。为了减轻处理这些常用但冗长模式的痛苦,事先定义了预定义元字符集合。正则表达式的不同实现定义了不同的预定义元字符集合。这些预定义元字符的标准语法是,在反斜杠 \ 后跟一个或多个字符。多数预定义元字符只有一个字符,它们的使用很容易,是冗长字符类的理想替代字符。以下是两个示例:\d 匹配所有数值数字,\w 匹配所有单词字符(字母数字加下划线)。例外情况是一些特定字符代码匹配,此时必须指定所匹配字符的地址,如 \u000D 将匹配 Unicode 回车符。下面列出一些最常用的字符类及其等效的元字符。(以上内容取自.net正则表达式)
元字符 说明与等效字符类
\a 匹配铃声(警报);\u0007
\b 匹配字符类外的字边界,它匹配退格字符,\u0008
\t 匹配制表符,\u0009
\r 匹配回车符,\u000D
\w 匹配垂直制表符,\u000B
\f 匹配换页符,\u000C
\n 匹配新行,\u000A
\e 匹配转义符,\u001B
\040 匹配 3 位 8 进制 ASCII 字符。\040 表示空格(十进制数 32)。
\x20 使用 2 位 16 进制数匹配 ASCII 字符。此例中,\x2- 表示空格。
\cC 匹配 ASCII 控制字符,此例中是 ctrl-C。
\u0020 使用 4 位 16 进制数匹配 Unicode 字符。此例中 \u0020 是空格。
\* 不代表预定义字符类的任意字符都只作为该字符本身对待。因此,\* 等同于 \x2A(是文字 *,不是 * 元字符)。
\p{name} 匹配已命名字符类“name”中的任意字符。支持名称是 Unicode 组和块范围。例如,Ll、Nd、Z、IsGreek、IsBoxDrawing 和 Sc(货币)。
\p{name} 匹配已命名字符类“name”中不包括的文本。
\w 匹配任意单词字符。对于非 Unicode 和 ECMAScript 实现,这等同于 [a-zA-Z_0-9]。在 Unicode 类别中,这等同于 [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]。
\W \w 的否定,等效于 ECMAScript 兼容集合 [^a-zA-Z_0-9] 或 Unicode 字符类别 [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]。
\s 匹配任意空白区域字符。等效于 Unicode 字符类 [\f\n\r\t\v\x85\p{Z}]。如果使用 ECMAScript 选项指定 ECMAScript 兼容方式,\s 等效于 [ \f\n\r\t\v] (请注意前导空格)。
\S 匹配任意非空白区域字符。等效于 Unicode 字符类别 [^\f\n\r\t\v\x85\p{Z}]。如果使用 ECMAScript 选项指定 ECMAScript 兼容方式,\S 等效于 [^ \f\n\r\t\v] (请注意 ^ 后的空格)。
\d 匹配任意十进制数字。在 ECMAScript 方式下,等效于 Unicode 的 [\p{Nd}]、非 Unicode 的 [0-9]。
\D 匹配任意非十进制数字。在 ECMAScript 方式下,等效于 Unicode 的 [\p{Nd}]、非 Unicode 的 [^0-9]。
参考资料: http://hbfxyuchao.51.net/logo.gif
2006-03-16
请回想一下在硬盘上是如何查找文件的。您肯定会使用 ? 和 * 字符来帮助查找您正寻找的文件。? 字符匹配文件名中的单个字符,而 * 则匹配一个或多个字符。一个如 'data?.dat' 的模式可以找到下述文件:
data1.dat
data2.dat
datax.dat
dataN.dat
如果使用 * 字符代替 ? 字符,则将扩大找到的文件数量。'data*.dat' 可以匹配下述所有文件名:
data.dat
data1.dat
data2.dat
data12.dat
datax.dat
dataXYZ.dat
尽管这种搜索文件的方法肯定很有用,但也十分有限。? 和 * 通配符的有限能力可以使你对正则表达式能做什么有一个概念,不过正则表达式的功能更强大,也更灵活。