Heim > Backend-Entwicklung > PHP-Tutorial > php 请教一个正则表达式:保留字符串中的字母、数字、下划线、小数点,短横线

php 请教一个正则表达式:保留字符串中的字母、数字、下划线、小数点,短横线

WBOY
Freigeben: 2016-06-06 20:48:16
Original
1392 Leute haben es durchsucht

php 请教一个正则表达式:保留字符串中的字母、数字、下划线、小数点,短横线。
该正则如何写,谢谢了~~

回复内容:

php 请教一个正则表达式:保留字符串中的字母、数字、下划线、小数点,短横线。
该正则如何写,谢谢了~~

<code><?php $str='AB12@#$%()_.-cd';
var_dump($str);
var_dump(preg_replace("/[^a-zA-Z0-9_.-]+/","", $str));
?>
</code>
Nach dem Login kopieren

输出:

<code>string(15) "AB12@#$%()_.-cd"
string(9) "AB12_.-cd"
</code>
Nach dem Login kopieren

首先纠正你的问题的一个错误,单纯正则表达式是无法做到保留什么或者是去除什么的。正则表达式的作用是用来匹配符合条件的内容。

如果单纯的是想要提取里头符合要求的字符的话,可是试一下以下的代码:

<code><?php $text = 'In the 电影_后天 230809-people died.';

$preg = '/[^a-zA-Z0-9.\-_]/';
preg_replace($preg, "", $text);
//Inthe_230809-peopledied.
?>
</code>
Nach dem Login kopieren

如果是想要保证一个字符串中只允许如上条件出现的话,可以上网上搜一下,这种需求还是很多的(用户名的条件过滤),或者使用如下匹配(未做测试):

<code>$preg = '/([a-zA-Z0-9.\-_]*?)/';
</code>
Nach dem Login kopieren

提的太简单了。想都想得到这是一个一拥而上的问题。

表达式并不难写:[a-zA-Z0-9_\-\.]+

但在机制上,正则表达式一次肯定只能找到一块匹配。就算在正则内部可以分成匹配组,那也只能挨个匹配组单独提取,永远无法“取出来就是连接好的”。不能什么都期待一步到位的。

所以必须找到小块表达式的所有匹配,然后连接起来。

<code class="lang-php">$patt = '/[a-zA-Z0-9_\\-\\.]+/';
preg_match_all($patt, $content, $result);
echo implode('', $result);
</code>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage