请问 php 正则中的这些是什么编码呢?

作者&投稿:戚轻 (若有异议请与网页底部的电邮联系)
php 中支持正则的方法有哪一些?~

\
将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n"匹配字符"n"。"
"匹配一个换行符。串行"\\"匹配"\"而"\("则匹配"("。


^
匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“
"或""之后的位置。


$
匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“
"或""之前的位置。


*
匹配前面的子表达式零次或多次。例如,zo*能匹配“z"以及"zoo"。*等价于{0,}。


+
匹配前面的子表达式一次或多次。例如,“zo+"能匹配"zo"以及"zoo",但不能匹配"z"。+等价于{1,}。


?
匹配前面的子表达式零次或一次。例如,“do(es)?"可以匹配"does"或"does"中的"do"。?等价于{0,1}。


{n}
n是一个非负整数。匹配确定的n次。例如,“o{2}"不能匹配"Bob"中的"o",但是能匹配"food"中的两个o。

{n,}
n是一个非负整数。至少匹配n次。例如,“o{2,}"不能匹配"Bob"中的"o",但能匹配"foooood"中的所有o。"o{1,}"等价于"o+"。"o{0,}"则等价于"o*"。


{n,m}
m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}"将匹配"fooooood"中的前三个o。"o{0,1}"等价于"o?"。请注意在逗号和两个数之间不能有空格。


?
当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo","o+?"将匹配单个"o",而"o+"将匹配所有"o"。


.
匹配除“
"之外的任何单个字符。要匹配包括"
"在内的任何字符,请使用像"(.|
)"的模式。


(pattern)
匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“\("或"\)"。


(?:pattern)
匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|)"来组合一个模式的各个部分是很有用。例如"industr(?:y|ies)"就是一个比"industry|industries"更简略的表达式。

(?=pattern)
正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)"能匹配"Windows2000"中的"Windows",但不能匹配"Windows3.1"中的"Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。


(?!pattern)
正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)"能匹配"Windows3.1"中的"Windows",但不能匹配"Windows2000"中的"Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始

(?<=pattern)
反向肯定预查,与正向肯定预查类拟,只是方向相反。例如,“(?<=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"。


[a-z]
字符范围。匹配指定范围内的任意字符。例如,“[a-z]"可以匹配"a"到"z"范围内的任意小写字母字符。


[^a-z]
负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]"可以匹配任何不在"a"到"z"范围内的任意字符。


\b
匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b"可以匹配"never"中的"er",但不能匹配"verb"中的"er"。


\B
匹配非单词边界。“er\B"能匹配"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。




匹配一个换行符。等价于\x0a和\cJ。


匹配一个回车符。等价于\x0d和\cM。


\s
匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f
\v]。


\S
匹配任何非空白字符。等价于[^ \f
\v]。



匹配一个制表符。等价于\x09和\cI。


\v
匹配一个垂直制表符。等价于\x0b和\cK。


\w
匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]"。


\W
匹配任何非单词字符。等价于“[^A-Za-z0-9_]"。


\xn
匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“\x41"匹配"A"。"\x041"则等价于"\x04&1"。正则表达式中可以使用ASCII编码。.



um
匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1"匹配两个连续的相同字符。




标识一个八进制转义值或一个向后引用。如果
之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。



m
标识一个八进制转义值或一个向后引用。如果
m之前至少有nm个获得子表达式,则nm为向后引用。如果
m之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则
m将匹配八进制转义值nm。



ml
如果n为八进制数字(0-3),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。


\un
匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号(©)。

试一下代码:
$str = "这%里是^测&试*中$心,欢.迎e你4的6到k来,我r们awe这y里wet一ef直在努力gr着找寻最佳gr的伙伴,希望您的$$%加盟可以@推动我们GH团队高速发展!";
$code = "/[".chr(0xa1)."-".chr(0xff)."]+/";
preg_match_all($code,$str, $arr); //GB2312汉字字母数字下划线正则表达式
print_r($arr);

一:[\x81-\xfe]格式的正则:

$s=preg_replace('/^([\x81-\xfe][\x40-\xfe])*/','0',$neirong); 这里面的大多是日韩文字

二:x{4e00}格式的正则:

preg_match("/^[\x{4e00}-\x{9fa5}]{1,4}/u",$str); 这里面是匹配中文;

——————————————————————————
这些字符集尤其是日文字符集的各种字、标点以及特殊符号的时候有所帮助。
UTF8
[\x01-\x7f]|[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}
UTF16
[\x00-\xd7][\xe0-\xff]|[\xd8-\xdf][\x00-\xff]{2}
JIS
[\x20-\x7e]|[\x21-\x5f]|[\x21-\x7e]{2}
SJIS
[\x20-\x7e]|[\xa1-\xdf]|([\x81-\x9f]|[\xe0-\xef])([\x40-\x7e]|[\x80-\xfc])
EUC_JP
[\x20-\x7e]|\x81[\xa1-\xdf]|[\xa1-\xfe][\xa1-\xfe]|\x8f[\xa1-\xfe]{2}
EUC_JP标点符号及特殊字符
[\xa1-\xa2][\xa0-\xfe]
EUC_JP全角数字
\xa3[\xb0-\xb9]
EUC_JP全角大写英文
\xa3[\xc1-\xda]
EUC_JP全角小写英文
\xa3[\xe1-\xfa]
EUC_JP全角平假名
\xa4[\xa1-\xf3]
EUC_JP全角片假名 [color=Red]2007-03-12 15:00更新[/color]
\xa3[\xb0-\xb9]|\xa3[\xc1-\xda]|\xa5[\xa1-\xf6][\xa3][\xb0-\xfa]|[\xa1][\xbc-\xbe]|[\xa1][\xdd]
EUC_JP全角汉字 [color=Red]2007-03-12 15:06更新[/color]
[\xb0-\xcf][\xa0-\xd3]|[\xd0-\xf4][\xa0-\xfe]|[\xB0-\xF3][\xA1-\xFE]|[\xF4][\xA1-\xA6]|[\xA4][\xA1-\xF3]|[\xA5][\xA1-\xF6]|[\xA1][\xBC-\xBE]
Big5
[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|[\xa1-\xfe])
GBK
[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]
GB2312汉字
[\xb0-\xf7][\xa0-\xfe]
GB2312半角标点符号及特殊符号
\xa1[\xa2-\xfe]
GB2312罗马数组及项目序号
\xa2([\xa1-\xaa]|[\xb1-\xbf]|[\xc0-\xdf]|[\xe0-\xe2]|[\xe5-\xee]|[\xf1-\xfc])
GB2312全角标点及全角字母
\xa3[\xa1-\xfe]
GB2312日文平假名
\xa4[\xa1-\xf3]
GB2312日文片假名
\xa5[\xa1-\xf6]
补充:
GB18030
[\x00-\x7f]|[\x81-\xfe][\x40-\xfe]|[\x81-\xfe][\x30-\x39][\x81-\xfe][\x30-\x39]
[color=Red]2007-03-12 21:35 补充[/color]
日文半角空格
\x20
SJIS全角空格
(?:\x81\x81)
SJIS全角数字
(?:\x82[\x4f-\x58])
SJIS全角大写英文
(?:\x82[\x60-\x79])
SJIS全角小写英文
(?:\x82[\x81-\x9a])
SJIS全角平假名
(?:\x82[\x9f-\xf1])
SJIS全角平假名扩展
(?:\x82[\x9f-\xf1]|\x81[\x4a\x4b\x54\x55])
SJIS全角片假名
(?:\x83[\x40-\x96])
SJIS全角片假名扩展
(?:\x83[\x40-\x96]|\x81[\x45\x5b\x52\x53])
EUC_JP全角空格
(?:\xa1\xa1)
EUC半角片假名
(?:\x8e[\xa6-\xdf])

——————————————————————————

下面是utf-8编码的例子:
$str = "汉字";
if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) {
print("该字符串全部是中文");
} else {
print("该字符串不全部是中文");
}

下面的例子包含gbk,gb2312的例子:

<?php
$action = trim($_GET['action']);
if($action == "sub")
{
$str = $_POST['dir'];
//if(!preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str)) //GB2312汉字字母数字下划线正则表达式
if(!preg_match("/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u",$str)) //UTF-8汉字字母数字下划线正则表达式
{
echo "<font color=red>您输入的[".$str."]含有违法字符</font>";
}
else
{
echo "<font color=green>您输入的[".$str."]完全合法,通过!</font>";
}
}
?>


河源市15132384124: 请问 php 正则中的这些是什么编码呢? -
仰贾环欣: 一:[\x81-\xfe]格式的正则: $s=preg_replace('/^([\x81-\xfe][\x40-\xfe])*/','0',$neirong); 这里面的大多是日韩文字二:x{4e00}格式的正则: preg_match("/^[\x{4e00}-\x{9fa5}]{1,4}/u",$str); 这里面是匹配中文;—————————————...

河源市15132384124: PHP中正则表达式中包含三种元素分别是什么?
仰贾环欣: 正则表达式中包含三种元素分别为:量词、元字符、修饰符

河源市15132384124: php 正则中 这个表示什么 /\</i 原句是preg - match('/\</i',$url) -
仰贾环欣: 你好,preg_match函数是php内置的一个正则匹配函数,它的匹配规则必须加上前后/;比如我要匹配字符a 可以这样写 preg_match('/a/',$url); 而你那个是 /\</i 里面的\是个转义字符(特殊字符需要转义)而i表示忽略大小写,其实按照你的这个匹配要求可以不用写i ;自然你这个的意思就是匹配< 如果$url这个字符串中包含<则返回1否则返回0(preg_match(pattern,$url)返回 pattern 的匹配次数. 它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后 将会停止搜索)

河源市15132384124: PHP中的正则表达式是什么意思? -
仰贾环欣: php中沿袭了perl语言的正则表达式规则,用户需要根据正则表达式规则书写一些具有一定含义的字符串,然后通过匹配从而提取用户想要的信息

河源市15132384124: php中正则表达式的一些问题 -
仰贾环欣: 第一个,'/[^\/]+/' 里,前后的斜杠只是表示中间的内容是正则表达式,所以正则表达式是:[^\/]+,其中\/是转义字符,表示斜杠/,中括号里的第一个元字符^表示非斜杠的字符,那 [^\/]+就是匹配长度至少为1,多无限的字符串了.第二个:注意后面...

河源市15132384124: php的正则表达式 '/\b\w{2}\b/ '是什么意思 -
仰贾环欣: \w用于匹配字母,数字或下划线字符. {n}匹配确定的 n 次.例如,'o{2}' 不能匹配 'Bob' 中的 'o',但是能匹配 'food' 中的两个oo. \b定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一. 比如表达式'/\bst\b/'可以匹配'stub'或'best',但不能匹配'industry'.所以/\b\w{2}\b/可以匹配任意以两个字母,数字或下划线字符为串头或串尾的串,比如'3com','a_b', 'never let'等,但不能匹配'I hit u'或'&abc%'

河源市15132384124: PHP 正则表达式\\1 \\2是什么意思 -
仰贾环欣: 其实是 \1 因为在 " 双引号里头 所以才写成 \\1 正则表达式里头 有时候会 出现 ( ) 这个是范围符号, \1 代表 第一个 ( ) 里面部分 匹配的 字符串 \2 代表 第二个 ( ) 里面的..一般用在正则替换的时候.

河源市15132384124: php中的正则表达式,实在弄不懂横线“ - ”的作用,如下 -
仰贾环欣: 横杠就是横杠的意思啊,就是横杠这个符号啊....就和w就是w这个字母是一个意思啊,横杠在正则中并不是具有语意的符号吧....不对,需要补充一下除了a-z,0-9之类这种写法外,-是没有语意的

河源市15132384124: PHP正则表达式 解释下这个 -
仰贾环欣: 1: ^[a-z '.-]{2,}$ //这个不懂( '.- )是什么意思在正则表达式中,[ ]中的字符是你允许出现的匹配字符的集合,因此,就是说这三个字符都是允许的合...

河源市15132384124: php正则表达式中的[ - +.']是什么意思 -
仰贾环欣: []里面的字符是可选字符,而且只能从里面去选.“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次.“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次.“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次.我说的都是常用的,如果还有不懂的可以去后盾网论坛问题求助专区,希望我的回答对你有帮助!

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网