#符号的作用与/?
不同$output = preg_replace('#[^A-Za-z0-9]#i', '', $input);
$output = preg_replace('/[^A-Za-z0-9]/i', '', $input);
我在/ [^ A-Za-z0-9] /?
之后做了什么字母^是什么意思?
答案 0 :(得分:4)
在某些语言中,无论什么类型的字符开始或结束正则表达式的模式部分都无关紧要,只要它在开头和结尾都是相同的(我相信这是Perl的保留,可以说是第一个伟大的正则表达式语言)。由于PHP遵循这一思路,#
和/
是等效的。
i
=“使此搜索不区分大小写”[^...]
=排除方括号之间的所有内容(^在此上下文中基本上表示“排除”)。您可以学习很多关于正则表达式here的内容。
答案 1 :(得分:2)
这只是一个不同的分隔符。如果你要在你的正则表达式中使用斜杠,你不希望每次都要逃避它,所以你分配一个哈希(或其他字符,有很多可供选择)作为分隔符,这样它不需要逃脱。
正则表达式末尾的i
是一个修饰符,告诉PHP在执行匹配时忽略大小写。即字符A
和a
是等效的。使用i
修饰符时,无需使用A-Za-z
,因为a-z
包含在无壳A-Z
匹配中。
当用作字符列表中的第一个字符时,克拉(即^
)表示匹配该列表中不的任何内容)。所以[^ abc]匹配任何但字符a
,b
和c
。
答案 2 :(得分:0)