当前位置:  开发笔记 > 编程语言 > 正文

如何删除非字母数字字符?

如何解决《如何删除非字母数字字符?》经验,为你挑选了6个好方法。

我需要删除字符串中没有a-z A-Z 0-9设置或不是空格的所有字符.

有人有这个功能吗?



1> Chad Birch..:

听起来你几乎已经知道你想做什么,你基本上把它定义为正则表达式.

preg_replace("/[^A-Za-z0-9 ]/", '', $string);


zuk1:regexbuddy是一个很好的帮助
如果您想将连字符包含为允许的字符,这是一个示例.我需要这个,因为我需要根据电子邮件地址从Moodle用户名中删除不允许的字符:preg_replace("/ [^ a-z0-9 _.@\ - ] /",'',$ string);
想要关于这个的说明:).人们来这里看看为什么会这样.请考虑正则表达式的解释!谢谢

2> voondo..:

对于unicode字符,它是:

preg_replace("/[^[:alnum:][:space:]]/u", '', $string);


为了澄清,它们被称为标志.它们被放在结束分隔符之后(在这种情况下它是"/",但它可以是"〜"或"@"或任何你想要使用的字符,只要开始和结束分隔符是相同的)并更改表达的行为.
这里的`i`标志真的有必要,因为`[:alnum:]`已经涵盖了两种情况?
这里仍然有一个错误,字符类需要用':]'终止,所以正确的行是:preg_replace("/ [^ [:alnum:] [:space:]]/ui",'', $字符串);

3> raspi..:

正则表达是你的答案.

$str = preg_replace('/[^a-z\d ]/i', '', $str);

i代表不区分大小写.

^ 意思是,不是从一开始.

\d 匹配任何数字.

a-z匹配a和之间的所有字符z.由于i参数,您不必指定a-zA-Z.

之后\d有一个空格,这样的空间才能在此正则表达式.


想要关于这个的说明:).人们来这里看看为什么会这样.请考虑正则表达式的解释!不是每个人都足够先进,无需解释就知道你在那里写了什么.谢谢

4> Alex Stephen..:

这是一个非常简单的正则表达式:

\W|_

并根据需要使用(使用正/斜杠分隔符).

preg_replace("/\W|_/", '', $string);

在这里用这个很好的工具测试它,解释正则表达式正在做什么:

http://www.regexr.com/



5> Jonathon..:

如果需要支持其他语言,而不是典型的可用区,则可以使用以下语言:

preg_replace('/[^\p{L}\p{N} ]+/', '', $string);

[^\p{L}\p{N} ]定义了一个否定(它将匹配在一个字符定义)字符类的:

\p{L}任何语言的信件。

\p{N}任何脚本中的数字字符。

:空格字符。

+ 贪婪地在1到无限次之间匹配字符类。

这将保留其他语言和脚本以及AZ的字母和数字:

preg_replace('/[^\p{L}\p{N} ]+/', '', 'hello-world'); // helloworld
preg_replace('/[^\p{L}\p{N} ]+/', '', 'abc@~#123-+=öäå'); // abc123öäå
preg_replace('/[^\p{L}\p{N} ]+/', '', '????!@£$%^&*()'); // ????

注意:这是一个非常古老但仍然相关的问题。我的回答纯粹是为了提供可能对将来的访问者有用的补充信息。



6> Intacto..:
[\W_]+

 

$string = preg_replace("/[\W_]+/u", '', $string);

它选择所有非AZ,az,0-9并将其删除。

在此处查看示例:https://regexr.com/3h1rj

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有