正则表达式是一系列形成图案的字符,主要用于搜索和替换.创建模式的目的是匹配特定字符串,以便开发人员可以根据条件提取字符并替换某些字符.
RegExp对象
RegExp对象帮助开发人员匹配字符串模式,属性和方法可以帮助我们轻松地使用正则表达式.它类似于JavaScript中的RegExp
属性
模式 : Pattern方法表示用于定义正则表达式的字符串,应在使用正则表达式对象之前设置它.
IgnoreCase : 一个Boolean属性,表示是否应对字符串中的所有可能匹配测试正则表达式,如果为true或false.如果未明确指定,则IgnoreCase值设置为False.
全局 : 一个Boolean属性,表示是否应针对字符串中的所有可能匹配测试正则表达式.如果未明确指定,则全局值设置为False.
方法
测试(搜索字符串) : Test方法以字符串作为参数,如果正则表达式可以成功匹配字符串,则返回True,否则返回False.
替换(search-string,replace-string) : Replace方法有2个参数.如果搜索成功,则它将该匹配替换为替换字符串,并返回新字符串.如果没有匹配,则返回原始搜索字符串.
执行(搜索字符串) : Execute方法与Replace类似,只是它返回一个Matches集合对象,包含每个成功匹配的Match对象.它不会修改原始字符串.
匹配集合对象
Matches集合对象作为Execute方法的结果返回.此集合对象可以包含零个或多个Match对象,并且此对象的属性是只读的.
计数 : Count方法表示集合中匹配对象的数量.
项目 : Item方法允许从匹配集合对象访问匹配对象.
匹配对象
Match对象包含在matches集合对象中.这些对象代表搜索字符串后的成功匹配.
FirstIndex : 它表示匹配发生的原始字符串中的位置.此索引从零开始,这意味着字符串中的第一个位置为0.
长度 : 一个值,表示匹配字符串的总长度.
值 : 表示匹配值或文本的值.它也是访问Match对象时的默认值.
所有关于模式参数
模式构建类似于PERL.使用正则表达式时,模式构建是最重要的事情.在本节中,我们将讨论如何根据各种因素创建模式.
位置匹配
位置匹配的重要性在于确保我们将正则表达式放在正确的位置.
符号 | 描述 |
---|---|
^ | 仅匹配字符串的开头. |
$ | 仅匹配字符串的结尾. |
\ b | 匹配任何单词边界 |
\B | 匹配任何非字边界 |
文字匹配
任何形式的字符,如字母,数字或特殊字符或甚至十进制,十六进制mal可以被视为文字.由于很少有字符在正则表达式的上下文中具有特殊含义,我们需要使用转义序列来转义它们.
符号 | 描述 |
---|---|
字母数字 | 匹配字母和数字字符只有. |
\ n | 匹配一个新行. |
\ [ | 匹配[仅限文字 |
\] | 匹配]只有文字 |
\( | 匹配(仅限文字 |
\) | 匹配)只有文字 |
\t | 匹配水平标签 |
\v | 匹配垂直制表符 |
\ | | 匹配|只有文字 |
\ { | 匹配{仅文字 |
\} | 只匹配文字 |
\\ | 仅匹配\ literal |
\? | 匹配?只有文字 |
\ * | 匹配*仅文字 |
\ + | 仅匹配+文字 |
\. | 匹配.只有文字 |
\b | 匹配任何单词边界 |
\B | 匹配任何非字边界 |
\ f | 匹配换页 |
\ r | 匹配回车 |
\ xxxx | 匹配八进制数xxx的ASCII字符. |
\ xdd | 匹配十六进制数dd的ASCII字符. |
\uxxxx | 匹配UNICODE文字xxxx的ASCII字符. |
字符类匹配
字符类是由自定义分组并封装在[]括号内.如果我们期望一个不应该在列表中的字符类,那么我们应该使用负符号忽略该特定字符类,这是一个上限^.
之外的任何字符类
符号 | 描述 | |
---|---|---|
[xyz] | 匹配字符集中包含的任何字符类. | |
[^ xyz] | 匹配字符集中未包含的任何字符类. | |
. | 匹配除\ n | |
\ w | 匹配任何单词字符类.相当于[a-zA-Z_0-9] | |
\ W | 匹配任何非单词字符类.相当于[^ a-zA-Z_0-9] | |
\ d | 匹配任何数字类.相当于[0-9]. | |
\ D | 匹配任何非数字字符类.相当于[^ 0-9]. | |
\s | 匹配任何空格字符类.相当于[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ :center;"> \S | 匹配任何空格字符类.相当于[^ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/h3> 重复匹配允许在正则表达式中进行多次搜索.它还指定元素在正则表达式中重复的次数. |
符号 | 描述 | |
* | 匹配给定正则表达式的零次或多次出现.相当于{0,}. | |
+ | 匹配给定正则表达式的一个或多个实例.相当于{1,}. | |
? | 匹配给定正则表达式的零次或一次出现.相当于{0,1}. | |
{x} | 完全匹配给定正则表达式的x次出现次数. | |
{x,} | 匹配至少x次出现的给定正则表达式. | |
{x,y} | 将x与y给定正则表达式的出现次数匹配. |
Alternation&分组
轮换和分组有助于开发人员创建更复杂的正则表达式,特别是处理正则表达式中的复杂子句,从而提供极大的灵活性和控制.
符号 | 描述 |
---|---|
0 | 对子句进行分组以创建子句. "(xy)?(z)"匹配"xyz"或"z". |
| | Alternation结合一个正则表达式子句,然后匹配任何单个子句. "(ij)|(23)|(pq)"匹配"ij"或"23"或"pq". |
构建正则表达式
以下是一些清楚解释如何构建正则表达式的示例.
正则表达式 | 描述 |
---|---|
"^ \s * .."和".. \ n * $" | 表示一行中可以包含任意数量的前导和尾随空格字符. |
"((\ $ \s?)|(#\ s?))?" | 表示可选的$或#符号,后跟可选空格. |
"((\d +(\.(\\\))?)?))" | 表示至少存在一位数字通过可选的小数和小数点后的两位数/td> |
示例
以下示例检查用户是否输入了电子邮件其格式应匹配的ID,以便有一个电子邮件ID后跟'@',然后是域名.