我是REGEX的新手,并尝试在此处搜索一些相关问题。但找不到解决方案。
我想检查字符串是否仅包含以下内容:
1)ASCII字符(目前仅使用"^\p{ASCII}*S"
用于ASCII)或
2)以下货币符号: ₺,£,€
我知道货币符号不是来自ASCII,但是我们可以从HTML获得这些值,并使用StringEscapeUtils.unescapehtml()
,因此只需要在满足上述任何条件时才匹配任何正格图案。
我的要求是:
如果字符串具有ASCII以外的任何字符和给定的符号,则应返回
false
如果您查看模式类的Javadoc,您会看到ASCII代码的字符类。因此,您的代码可能是:
Stirng input = ...;
boolean isValid = input.matches("[₺£€\p{ASCII}]*");
那是假设您要接受任何任何 ascii字符。
此正则应该完成您的工作 -
[!-~₺£€]+
它匹配所有可打印的ASCII字符,即33至126加3个特定的非ASCII字符。
在此处检查-http://regexr.com/