如何使用正则表达式检查字符串是否仅包含某些允许的字符?
我需要一个特殊的正则表达式,并且没有任何经验,所以我在这个问题上转向你们。
我需要验证一个分类广告标题字段,这样它几乎就没有任何特殊字符。
只允许使用字母和数字,以及三个瑞典语字母 å、ä、ö(大写或小写)。
除上述情况外,还应允许以下操作:
- “&”符号。
- 括号“()”
- 数学符号 “-”, “+”, “%”, “/”, “*”
- 美元和欧元符号
- 一个重音符号字母:“é”。只有这个是必需的
- 双引号和单引号符号。
- 逗号“,”和点“.”符号
我需要一个特殊的正则表达式,并且没有任何经验,所以我在这个问题上转向你们。
我需要验证一个分类广告标题字段,这样它几乎就没有任何特殊字符。
只允许使用字母和数字,以及三个瑞典语字母 å、ä、ö(大写或小写)。
除上述情况外,还应允许以下操作:
试试这个:
^[\s\da-zA-ZåäöÅÄÖ&()+%/*$€é,.'"-]*$
故障:
^= 匹配字符串的开头
[...]*= 将括号内的任何字符(或范围)匹配一次或多次
$= 匹配字符串的末尾
更新了评论中的所有建议。谢谢你们!
接受的答案中存在安全漏洞:
^[\s\da-zA-ZåäöÅÄÖ&()+%/*$€é,.'"-]*$
这将为空字符串生成真正的响应,就像 0 次或更多次出现一样。*
这是一个更安全的版本:
^[\s\da-zA-ZåäöÅÄÖ&()+%/*$€é,.'"-]+$
对 1 次或多次出现的情况做出 true 响应。+
更多信息可以在 https://regexr.com/