正则表达式

电脑杂谈  发布时间:2020-05-14 08:07:15  来源:网络整理

密码规则 正则表达式_正则表达式语法_正则表达式的规则

一切都从最基础的开始. 模式是正则表达式的最基本元素. 它们是描述字符串特征的一组字符. 模式可以非常简单,可以由普通字符串组成,也可以非常复杂,通常使用特殊字符来表示一系列字符,重复出现或上下文. 例如:

^once

此模式包含一个特殊字符^,这意味着该模式仅匹配那些以一次开头的字符串. 例如,该模式与字符串“一次”匹配,而与“曾经有一个男人来自纽约”不匹配. 就像^符号表示开始一样,$符号用于匹配以给定模式结尾的字符串.

bucket$

此模式与“谁将所有都存储在存储桶中”匹配,而与“存储桶”不匹配. 当同时使用字符^和$时,表示完全匹配(字符串与模式相同). 例如:

^bucket$

仅匹配字符串“ bucket”. 如果模式不包含^和$,则它将匹配包含该模式的任何字符串. 例如: 模式

once

带有字符串

There once was a man from NewYork
Who kept all of his cash in a bucket.

匹配.

在此模式下,字母(o-n-c-e)是文字字符,即它们代表字母本身,并且数字相同. 其他一些稍微复杂的字符,例如标点符号和白色字符(空格,制表符等),则需要使用转义序列. 所有转义序列均以反斜杠(\)开头. 制表符的转义序列为\ t. 因此,如果我们要检测字符串是否以制表符开头,可以使用以下模式:

^\t 

类似地,使用\ n表示“换行”,使用\ r表示回车. 其他特殊符号可以与前面的反斜杠一起使用. 例如,反斜杠本身用句点\\表示. 通过\. ,依此类推.

正则表达式的规则_密码规则 正则表达式_正则表达式语法

在Internet程序中,通常使用正则表达式来验证用户输入. 用户提交表格后,有必要判断输入的电话号码,地址,电子邮件地址,号等是否有效. 使用普通的基于文字的字符是不够的.

因此,一种更自由的方式来描述所需的模式是字符簇. 要创建代表所有元音字符的字符簇,请将所有元音字符放在方括号中:

[AaEeIiOoUu]

此模式匹配任何元音字符,但只能代表一个字符. 连字符可用于表示一系列字符,例如:

[a-z] //匹配所有的小写字母 
[A-Z] //匹配所有的大写字母 
[a-zA-Z] //匹配所有的字母 
[0-9] //匹配所有的数字 
[0-9\.\-] //匹配所有的数字,句号和减号 
[ \f\r\t\n] //匹配所有的白字符

类似地,这些仅代表一个字符,这非常重要. 如果要匹配由小写字母和一位数字组成的字符串,例如“ z2”,“ t6”或“ g7”,而不是“ ab2”,“ r2d3”或“ b52”,请使用以下模式:

^[a-z][0-9]$

尽管[a-z]代表26个字母的范围正则表达式的规则,但此处只能匹配第一个字符为小写字母的字符串.

如前所述,^表示字符串的开头,但是还有另一种含义. 如果在一组方括号中使用^,则表示“不”或“已排除”,通常用于排除某个字符. 使用前面的示例,我们要求第一个字符不能为数字:

^[^0-9][0-9]$

此模式匹配“&5”,“ g7”和“ -2”,但不匹配“ 12”和“ 66”. 以下是一些排除特定字符的示例:

[^a-z] //除了小写字母以外的所有字符 
[^\\\/\^] //除了(\)(/)(^)之外的所有字符 
[^\"\'] //除了双引号(")和单引号(')之外的所有字符

特殊字符. (点,句点)在正则表达式中用于表示除“换行”之外的所有字符. 因此,模式^ .5 $匹配任何以数字5结尾并以其他非“换行符”开头的两个字符的字符串. 模式. 可以匹配任何字符串,除了空字符串和仅包含“换行”的字符串.

PHP正则表达式具有一些内置的通用字符簇,列表如下:

密码规则 正则表达式_正则表达式语法_正则表达式的规则

字符群描述

[[:: alpha: ]]

任何字母

[[[: digit: ]]

任何号码

[[:: alnum: ]]

任何字母和数字

[[:: space: ]]

任何空白字符

[[[: upper: ]]

任何大写字母

[[:: Lower: ]]

任何小写字母

[[[: punct: ]]

正则表达式语法_正则表达式的规则_密码规则 正则表达式

任何标点符号

[[: xdigit: ]]

任何十六进制数都等于[0-9a-fA-F]

到目前为止,您已经知道如何匹配字母或数字,但是在更多情况下,可能必须匹配单词或数字集. 一个单词由几个字母组成,一组数字由几个单数组成. 字符或字符簇后的花括号({})用于确定先前内容重复出现的次数.

字符群描述

^ [a-zA-Z _] $

所有字母和下划线

^ [[:: alpha: ]] {3} $

所有3个字母的单词

字母a

^ a {4} $

^ a {2,4} $

aa,aaa或aaaa

^ a {1,3} $

正则表达式的规则_正则表达式语法_密码规则 正则表达式

a,aa或aaa

^ a {2,} $

包含两个以上a的字符串

^ a {2,}

例如: aardvark和aaab,但是苹果不起作用

a {2,}

例如: baad和aaa,但Nantucket无法使用

\ t {2}

两个标签

所有两个字符

这些示例描述了花括号的三种不同用法. 数字{x}表示前面的字符或字符簇仅出现x次;数字加上逗号{x,}表示前面的内容出现了x次或更多次;两个数字用逗号分隔正则表达式的规则,x,y}表示前面的内容至少出现x次,但不超过y次. 我们可以将模式扩展为更多的单词或数字:

^[a-zA-Z0-9_]{1,}$      // 所有包含一个以上的字母、数字或下划线的字符串 
^[1-9][0-9]{0,}$        // 所有的正整数 
^\-{0,1}[0-9]{1,}$      // 所有的整数 
^[-]?[0-9]+\.?[0-9]+$   // 所有的浮点数

最后一个例子不容易理解,是吗?以这种方式查看: 以可选的减号([-]?)(^)开头,后跟1个或多个数字([0-9] +),再加上一个小数点(\. ),后跟1个1或多位数字([0-9] +),无其他内容($). 在下面,您将知道可以使用的更简单的方法.

特殊字符?等于{0,1},它们都表示: 0或1个先前的内容,或者先前的内容是可选的. 因此,现在的示例可以简化为:

^\-?[0-9]{1,}\.?[0-9]{1,}$

特殊字符*和{0,}相等,它们都表示0或多个前面的内容. 最后,字符+和{1,}相等,表示前面内容中的1个或多个,因此上述4个示例可以写为:

^[a-zA-Z0-9_]+$      // 所有包含一个以上的字母、数字或下划线的字符串 
^[1-9][0-9]*$        // 所有的正整数 
^\-?[0-9]+$          // 所有的整数 
^[-]?[0-9]+(\.[0-9]+)?$ // 所有的浮点数

当然,从技术上讲,这不会降低正则表达式的复杂性,但是可以使它们更易于阅读.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-209587-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 张正一
        张正一

        但实际利率上浮不再设上限

      • 李杨
        李杨

        新生代最具商业价值的红烧肉

      热点图片
      拼命载入中...