好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP匹配连续的数字或字母的正则表达式

正则表达式的写法规则: "/ 规则需要写在2个斜杠中间 /" 。

( . :小数点)用于匹配除换行符之外的所有字符。
( \s :反斜杠小写s) 用于匹配单个空格符,包括tab键和换行符;
( \S :反斜杠大写S) 用于匹配除单个空格符之外的所有字符;
( \d :反斜杠d) 用于匹配从0到9的数字;也可以这样写: [0-9]
( \w : 反斜杠小写w)用于匹配字母,数字或下划线字符;
( \W :反斜杠大写W) 用于匹配所有与\w不匹配的字符;

元字符包括: + , * , ?

元字符理解起来容易混淆,所以我在后面做了代码结果截图

复制代码 代码如下:


“+”元字符规定其前导字符必须连续出现一次或多次

= 比如/es+/
与“tesseessssseast12354haeasashaha”字符串相匹配,首先要与第一个字母e匹配,然后匹配s,s必须出现一次或多次,请看实例截图。

“*”元字符规定其前导字符必须出现零次或连续多次

= 比如/es*/
与“tesseessssseast12354haeasashaha”字符串相匹配,首先与第一个字母e匹配,后面的s出现零次或者连续出现,看实例。

“?”元字符规定其前导对象必须连续出现零次或一次

= 比如/es?/
与“tesseessssseast12354haeasashaha”字符串相匹配,首先与第一个字母e匹配,后面的s出现零次或者最多出现一次(就是最后一个字母s不重复出现)。


示例代码:

复制代码 代码如下:


$str = "tesseessssseast12354haeasashaha";
echo "=====".$str."
";
echo "/es+/:".preg_replace("/es+/","-\\0-",$str)."
";
echo "/es*/:".preg_replace("/es*/","-\\0-",$str)."
";
echo "/es?/:".preg_replace("/es?/","-\\0-",$str)."
";
?>


执行结果截图:

另外如果觉得元字符“+*?”比较难理解可以用这种 { } 方法代替:

比如es*我们可以写成es{0,},而es+我们可以写成es{1,},es?可以写成es{0,1},注意:当不确定次数的时候就不用写(也不用空格)。

当然我们要指定出现多少次的可以写成这样: es{3} 表示s出现3次

举一反三:

比如要 替换连续多个空格为一个空格 ,我可以这样写: preg_replace("/ \s + /"," ",$str);
比如要 找出字符串中的数字(整数) : preg_replace("/ \d + /", "( \\0 )", $str );   \\0 是表示符合规则的字符串值

比如要 找出字符串中的带小数点的数字 : preg_replace("/ \d + \.\d + /", "( \\0 )", $str ); //这里的 “\.” 表示输出小数点

找出由字母组成的字符串: preg_replace("/ [a-zA-Z] + /", "( \\0 )", $str )

找出由(字母、数字混合)组成的字符串: preg_replace("/ ( [a-zA-Z] | \d ) + /", "( \\0 )", $str )

 

正则表达式中“或”运算,使用 “ | ”

例如上面的例子:找出由(字母或数字)混合组成的字符串 ( [a-zA-Z] | \d ) 也可以这样写 ( [a-zA-Z] | [0-9] )

“ ^ ”出现在 “[ ]”内时就被视做否定运算符; [^0-9] 表示除了数字之外的任何字符。

而当“^”位于“[ ]”之外,或没有“[ ]”时,则应当被视做定位符。

定位符的意思就是比如:“ ^The ”:开头一定要有”The”字符串;类似的:“ en $ ”:$符号表示必须是en结尾。

其实认真看一遍就会发现正则表达式还是挺简单的,除非是我写的教程真的有问题。

查看更多关于PHP匹配连续的数字或字母的正则表达式的详细内容...

  阅读:64次