如何用正则表达式检查字符串是否只包含某些允许的字符?

12 php regex

我需要一个特殊的正则表达式并且没有任何经验,所以我转向你们这一个.

我需要验证分类标题字段,因此它几乎没有任何特殊字符.

只允许使用字母和数字,以及三个瑞典字母å,ä,ö(大写或小写).

除此之外,还应允许这些:

  • 标志.
  • 括弧 "()"
  • 数学符号" - ","+","%","/","*"
  • 美元和欧元的迹象
  • 一个口音签名的信:"é".//只需要这个
  • 双引号和单引号.
  • 逗号","和点"." 迹象

Chr*_*tal 23

试试这个:

^[\s\da-zA-ZåäöÅÄÖ&()+%/*$€é,.'"-]*$
Run Code Online (Sandbox Code Playgroud)

分解:

^ =匹配字符串的开头

[...]* =匹配括号内的任何字符(或范围)一次或多次

$ =匹配字符串的结尾

更新了评论中的所有建议.多谢你们!

  • 小心,`-`是错的.需要在角色类的末尾.并且大多数反斜杠都是不必要的. (2认同)

Kae*_*het 5

接受的答案中存在安全漏洞:

^[\s\da-zA-ZåäöÅÄÖ&()+%/*$€é,.'"-]*$
Run Code Online (Sandbox Code Playgroud)

这将为空字符串生成一个真实的响应,就像*0 次或多次出现一样。

这是一个更安全的版本:

^[\s\da-zA-ZåäöÅÄÖ&()+%/*$€é,.'"-]+$
Run Code Online (Sandbox Code Playgroud)

+对 1 次或多次出现的响应为 true。

更多信息可以在https://regexr.com/找到