繁体   English   中英

正则表达式只允许用于撰写文章的字符

[英]Regex expression to allow only characters used for writing articles

我正在寻找一种正则表达式,以允许用于撰写文章的字符,例如:

  • 字母:a-zA-Z
  • 数字:0-9
  • 特殊字符:-。,+ * /'´“!#%&/()=?@£$€{[]} _ :;
  • 空格:换行符(输入空格)和空格

我最初尝试使用php,如下所示:

 preg_replace('/[^a-zA-Z,0-9],.;+- /', ,'', $input)

但是上面的行不起作用

编辑:第二次尝试转义字符以避免弄乱表达式:

preg_replace('/[^a-zA-Z,0-9]\-\.\,\+\*\/\'\´\"\!\#\%\&\/\(\)\=\?\@\£\$\€\{\[\]\}\_\:\;/', '', $input)

preg_replace函数需要三个参数,而不是两个。 一个正则表达式,替换值,然后是它应该匹配的字符串。

另外,您的正则表达式应在字符类中包含所有字符,否则,您要先匹配该字符类,然后再匹配其后的文字字符(可能不会出现)。 ;+还允许多个连续的分号,而不是+因为它不在字符类中且未转义时是量词。

 preg_replace('/[^a-zA-Z0-9,.;+-]+/', '', $input)

您可能会使用的另一个正则表达式是:

preg_replace('/[^[:print:]]+/u', '', $input)

这将取代任何非

可见的字符和空格(控制字符除外)

您可以在这里阅读更多内容https://www.regular-expressions.info/posixbrackets.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM