删除除字母、'<' 和 '>' 之外的所有字符
Remove all characters except letters, '<', and '>'
假设我有一个字符串:
$string="5 < 3 is @true"
我想删除除 < 和 > 之外的@(或任何非字母或数字字符)。
感谢阅读
使用:
$string = preg_replace('/[^<>]/', '', $string);
正则表达式
使用以下内容并替换为空字符串:
[^0-9a-z<> ]+
并使用 i
修饰符使其也适用于大写(不区分大小写的匹配)
说明
[^0-9a-z<> ]+ any character except: '0' to '9', 'a' to'z', '<', '>', ' '
(1 or more times(matching the most amount possible))
PHP
$re = "/[^0-9a-z<> ]+/i";
$str = "5 < 3 is @true";
$subst = "";
$result = preg_replace($re, $subst, $str);
正确的正则表达式如下:
/[^a-z<>]/gi
要替换,请这样做:
$string = preg_replace('/[^a-z<>]/gi', '', $string);
工作原理:
[^]
引爆一个 negative 字符 class (匹配组中 不是 的所有内容)
a-z
匹配从 a
到 z
的字符
<>
匹配文字字符(它将匹配 <
或 >
)
/.../i
表示匹配大小写 i 不敏感(使 a-z
也匹配 A-Z
)
/.../g
表示匹配是global
最后两个称为 标志,用于更改行为。
多个引擎可能有其他标志(例如 PHP 的标志 e
,它匹配 PHP 表达式并有助于保持正确的语法),但标志 gim
几乎无处不在。
标志 m
告诉 .
(句点或点字符)执行 m 多行匹配(这意味着换行符也被匹配)。当 .
位于字符 class 内时不需要这样做,因为在字符 class 内,它将匹配文字 .
字符。
假设我有一个字符串:
$string="5 < 3 is @true"
我想删除除 < 和 > 之外的@(或任何非字母或数字字符)。
感谢阅读
使用:
$string = preg_replace('/[^<>]/', '', $string);
正则表达式
使用以下内容并替换为空字符串:
[^0-9a-z<> ]+
并使用 i
修饰符使其也适用于大写(不区分大小写的匹配)
说明
[^0-9a-z<> ]+ any character except: '0' to '9', 'a' to'z', '<', '>', ' '
(1 or more times(matching the most amount possible))
PHP
$re = "/[^0-9a-z<> ]+/i";
$str = "5 < 3 is @true";
$subst = "";
$result = preg_replace($re, $subst, $str);
正确的正则表达式如下:
/[^a-z<>]/gi
要替换,请这样做:
$string = preg_replace('/[^a-z<>]/gi', '', $string);
工作原理:
[^]
引爆一个 negative 字符 class (匹配组中 不是 的所有内容)a-z
匹配从a
到z
的字符
<>
匹配文字字符(它将匹配<
或>
)/.../i
表示匹配大小写 i 不敏感(使a-z
也匹配A-Z
)/.../g
表示匹配是global
最后两个称为 标志,用于更改行为。
多个引擎可能有其他标志(例如 PHP 的标志 e
,它匹配 PHP 表达式并有助于保持正确的语法),但标志 gim
几乎无处不在。
标志 m
告诉 .
(句点或点字符)执行 m 多行匹配(这意味着换行符也被匹配)。当 .
位于字符 class 内时不需要这样做,因为在字符 class 内,它将匹配文字 .
字符。