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

2022-08-30 21:51:59

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

我需要验证一个分类广告标题字段,这样它几乎就没有任何特殊字符。

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

除上述情况外,还应允许以下操作:

  • “&”符号。
  • 括号“()”
  • 数学符号 “-”, “+”, “%”, “/”, “*”
  • 美元和欧元符号
  • 一个重音符号字母:“é”。只有这个是必需的
  • 双引号和单引号符号。
  • 逗号“,”和点“.”符号

答案 1

试试这个:

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

故障:

^= 匹配字符串的开头

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

$= 匹配字符串的末尾

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


答案 2

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

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

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

这是一个更安全的版本:

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

对 1 次或多次出现的情况做出 true 响应。+

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


推荐