正则表达式去除特殊字符,正则表达式有哪些限定字符
本内容由系统网小编为大家分享,Windows系统安装教程、办公系统、软件怎么使用、软件使用教程、办公软件攻略等信息。
一、常用修饰符
i | 忽略 - 不区分大小写 | 匹配设置为不区分的字体,在搜索时不区分的字体: A 和 a 不区分。 |
g | 全球-全球匹配 | 查找所有的匹配项。 |
m | multi line - 多行匹配 | 使边界字符 ^ 和 $ 匹配每个行的开始和结束,记住它是多行,而不是整个字符串的开始和结束。 |
s | 特殊字符圈. 包括替换n | 默认情况下的圆点 . 是匹配除换行符 n 之外的任何字符,加上 s 修饰符之后, . 中包含换行符 n。 |
g修饰符
g变换器可以搜索字符串中的所有匹配:
结果:
i修饰符
i 变换器匹配不区分的大小写,例如:
运行结果如下:
m 修饰符
m修改器可以使 ^ 和 $ 匹配文本中的每个行的开始和结束。
g只匹配第一个行,并添加m来实现多个行。
代码:
运行结果:
s修饰符
s修饰符默认情况下的圆点.是 匹配除换行符 n 之外的任何字符,加上 s 之后,.中包含换行符 n。
代码如下:
运行结果:
二、元字符
下面的表包含元字符的完整列表及其在常规表达式上下文中的行为:
将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,“n”匹配“n”字符。'n'匹配替换行。序列 '\" 匹配 "" 和 "(" 匹配 "("). |
|
^ | 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 'n' 或 'r' 之后的位置。 |
$ | 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 'n' 或 'r' 之前的位置。 |
* | 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 |
+ | 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 |
? | 例如,"do(es)?Can I match "do" or "does"?It is equal to {0,1}. |
{n} | n是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。 |
{n,} | n是一个非负整数。至少匹配n 次。例如,'o{2,}'不能匹配'o'在"Bob",但在"food"中都能匹配。'o{1,}'等于'o+'。'o{0,}'等于'o*'。 |
{n,m} | m和n是非负整数,其中n <= m。至少有n匹配和最多有m匹配。例如,"o{1,3}"将匹配"food"中的头三个o。'o{0,1}'等于'o?'。请注意,一个逗号和两个数字之间没有空间。 |
? | 当字符遵循其他约束时 (*, +,?, {n}, {n,}, {n,m})之后,匹配的模式并不贪婪。非贪婪模式匹配尽可能少的字符串,默认贪婪模式匹配尽可能多的字符串.例如,对于“oo”字符串,'o+?匹配一个单个“o”,“o+”匹配所有“o”。 |
. | 匹配除换行符(n、r)之外的任何单个字符。要匹配包括 'n' 在内的任何字符,请使用像"(.|n)"的模式。 |
(pattern) | 匹配模式,得到这个匹配。所取得的匹配可以从结果匹配集合中得到,在VBScript 中使用 SubMatches 集合,在JScript中, $0..$9属性被使用。要匹配圆括号字符,请使用'('或')'。 |
(?:pattern) | 匹配的模式但没有匹配的结果,这意味着这是没有达到的匹配,不用于以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。 |
(?=pattern) | 正向肯定预查(look ahead positive assert),在任何匹配模式字符串的开始处匹配搜索字符串。这是一场不获得比赛,也就是说,该匹配不需要为以后使用取得。例如,"Windows(?=95|98|NT|200)“Windows”在“Windows200”中可以匹配,但它不匹配Windows 3.“Windows 1”。预查不消耗字符,也就是说,在一个匹配发生后,在最近的匹配开始下一个匹配的搜索后立即,而不是从包含预览的字符开始. |
(?!pattern) | 正向否定预查(negative assert),在任何不匹配模式的字符串开始时匹配搜索字符串。这是一场不获得比赛,也就是说,该匹配不需要为以后使用取得。例如,Windows。!95|98|NT|200)"可以匹配"Windows 3."Windows"在"1",然而,它不能与“Windows”在“Windows 200”匹配。预查不消耗字符,也就是说,在一个匹配发生后,在最近的匹配开始下一个匹配的搜索后立即,而不是从包含预览的字符开始. |
(?<=pattern) | 反向(look behind)肯定预查,与正向肯定预查类似,只是方向相反。例如,"(?<=95|98|NT|2000)Windows"能匹配"2000Windows"中的"Windows",但不能匹配"3.1Windows"中的"Windows"。 |
(?<!pattern) | 反向否定预查,与正向否定预查类似,只是方向相反。例如"(?<!95|98|NT|2000)Windows"能匹配"3.1Windows"中的"Windows",但不能匹配"2000Windows"中的"Windows"。 |
x|y | 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。 |
[xyz] | 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。 |
[^xyz] | 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'、'l'、'i'、'n'。 |
[a-z] | 字段范围:匹配指定字段中的任何字段。例如,'[a-z]'可以匹配'a'到'z'范围内的任何小写字段。 |
[^a-z] | 负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。 |
b | 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'erb' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 |
B | 匹配非单边界。'erB'可以在"verb"中匹配'er',但不能在"never"中匹配'er'。 |
cx | 匹配由 x 指明的控制字符。例如, cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。 |
d | 匹配数字字符.等于[0-9]。 |
D | 匹配非数字字符,相当于[^0-9]。 |
f | 匹配一个替换字符,相当于x0c和cL。 |
n | 匹配一个替换行,相当于x0a和cJ。 |
r | 与返回符号匹配,相当于x0d和cM。 |
s | 匹配任何空白字符,包括空格、表格、页面更改等。 相当于[ fnrtv]。 |
S | 匹配任何非空白字符,相当于[^ fnrtv]。 |
t | 匹配一个制表符。等价于 x09 和 cI。 |
v | 与垂直标记匹配,相当于x0b和cK。 |
w | 匹配字母、数字、子行,等于'[A-Za-z0-9_]'。 |
W | 匹配非字母、数字、子行,等于'[^A-Za-z0-9_]'。 |
xn | 匹配 n,其中,n是一个16位数字的转写值。16位数字转换值必须是确定的两个数字的长度。例如,'x41'与'A'匹配。'x041' 则等价于 'x04' & "1"。ASCII编码可以在常规表达式中使用。 |
num | 匹配 num, 其中 num 是正整数. 参考得到的匹配. 例如,)1' 匹配同一字符的两个连续字符. |
n | 识别一个八进制符号值或背向引用。如果 n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。 |
nm | 识别一个八进制符号值或背向引用。如果在nm之前至少有nm得到的子表达式,然后nm是一个向后引用。如果 nm 至少 有 n 项 收购,则 n 为一个后跟文字 m 的向后引用。如上述条件不满足,如果 n 和 m 等于一个八进制数 (0-7),然后nm匹配八位变换值nm。 |
nml | 如果n是一个八进制数(0-3),m和l是两个八进制数(0-7),则八进制转换值nml匹配。 |
un | 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, u00A9 匹配版权符号 (?)。 |
接下来,我们分析了匹配的邮箱的正常表达式,:
运行结果:
再来一个:
解析:
运行结果:
如果你想了解更多,你必须亲自去做实验。
三、字符簇
在 INTERNET 的程序中,正则表达式通常用来验证用户的输入。当用户提交一个 FORM 以后,要判断输入的电话号码、地址、EMAIL 地址、信用卡号码等是否有效,用普通的基于字面的字符是不够的。
因此,我们需要的模式的描述方法是使用更自由的模式,即字符串集。 创建一个代表所有母音的字符集,将所有母音放在括号中:
这个模式匹配任何母音字符,但只代表一个字符。 字符的范围可以由字符串表示,例如:
同样的,它们也只代表一个字符,这是很重要的。如果你想匹配一个由小写字母和数字组成的字符串,例如“a2”,“b3”或“d5”,但不是"we2","d3e4"或"w34",用这个模式:
尽管[a-z]代表了26个字母的范围,但在这里它只能与小写字母的第一个字母匹配。
前面曾经提到^表示字符串的开头,但它还有另外一个含义。当在一组方括号里使用 ^ 时,它表示"非"或"排除"的意思,常常用来剔除某个字符。还用前面的例子,我们要求第一个字符不能是数字:
这个模式与 "#3"、"g4"及"-3" 是匹配的,但与 "23"、"67" 是不匹配的。下面是几个排除特定字符的例子:
特殊字符 .(点,除“新行”外,所有字符都使用在常规表达式中。因此,模型 ^.3$ 匹配任何以3号结束的字符串,并以其他非"新行"字符串开始。模型可以匹配任何字符串,除替换行(n,r)。
PHP的常用表达式包含了一些内置的通用字符串群,如下列出:
[[:alpha:]] | 任何字母 |
[[:digit:]] | 任何数字 |
[[:alnum:]] | 任何字母和数字 |
[[:space:]] | 任何空白字符 |
[[:upper:]] | 任何大写字母 |
[[:lower:]] | 任何小写字母 |
[[:punct:]] | 任何标点符号 |
[[:xdigit:]] | 任何16位数均等于[0-9a-fA-F] |
四、确定重复出现
到现在为止,你已经知道如何匹配一个字母或一个数字,但更多的情况下,你可能想匹配一个词或一个数组。一个词是由几个字母组成的.数组由几个单位组成.字符后面的括号({})或字符集以确定前面内容的发生数次。
^[a-zA-Z_]$ | 所有的字母和下划线 |
^[[:alpha:]]{3}$ | 三个字母中的单词 |
^a$ | 字母a |
^a{4}$ | aaaa |
^a{2,4}$ | aa,aa oraa |
^a{1,3}$ | a,aa或aaa |
^a{2,}$ | 包含两个以上a的字符串 |
^a{2,} | Aardvark和Aaab,但苹果不是 |
a{2,} | 如:baad和aaa,但Nantucket不行 |
t{2} | 两个制表符 |
.{2} | 所有的两个字符 |
这些例子描述了花括号的三个不同用途:一个数字 {x} 表示前面的字符或字符集只出现x次;一个数字加上一个逗号 {x,} 表示前面的内容出现x次或以上:
两个由逗号 {x,y} 分开的数字表示,前面的内容至少出现 x 次,但不能超过 y 次:
我们可以把模式扩展到更多的单词或数字:
最后一个例子不太了解,是吗?这样看: 用任意的负值([-] 吗?以(^)开始,后面一个或多个数字([0-9]+),以及一个小数点(.后面一个或多个数字([0-9]+),而背后没有其他东西($)。下面你会找到更简单的方法使用它。
特殊字符 ? 与 {0,1} 是相等的,它们都代表着:0个或1个前面的内容或前面的内容是可选的。所以刚才的例子可以简化为:
特殊字符 * 与 {0,} 是相等的,它们都代表着0 个或多个前面的内容。最后,字符 + 与 {1,} 是相等的,表示1 个或多个前面的内容,所以上面的4个例子可以写成:
当然,这从技术上并不减少常规表达式的复杂性,但它可以使它们更容易阅读。
XTw.com.Cn系统网专业应用软件下载教程,免费windows10系统,win11,办公软件,OA办公系统,OA软件,办公自动化软件,开源系统,移动办公软件等信息,解决一体化的办公方案。
免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!
联系邮箱:773537036@qq.com