使用正则表达式检查管道符号

6
管道符号|在正则表达式中被用作一种'或'语句,就我所知。可能是这个,也可能是那个,或者那个,那个等等...
然而,我想使用正则表达式检查一个字符串中是否存在这个符号。我尝试了对它进行转义,但似乎不起作用。
如果我已经在检查许多符号是否存在,例如#&@等等,我应该如何做到这一点呢?
2个回答

13

转义该字符是正确的方法。但是请确保您也转义了字符串声明中的转义字符:

"\\|"
'\\|'

另一种方法是使用字符类 ([|]),因为在其中您只有字符 ]^(仅在开头)、-、转义字符 \ 本身和定界符具有特殊含义,因此如果要表示为普通字符,则需要进行转义。


而插入符号^只有在字符类的第一个字符时才具有特殊含义,即[^|]和[|^]将表现不同。 - Rob Wells

5
$ cat 1933190.php

<?php
    echo preg_match("/\|/", "This is not a pipe.") . "\n";
    echo preg_match("/\|/", "The | the | this is a |.") . "\n";
?>

输出:

$ php 1933190.php
0
1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接