目前我有
Pattern p = Pattern.compile("[^a-zA-Z0-9]");
boolean invalidChar = p.matcher("text").find();
要查找无效字符,如果它们不是字母和数字,但我还想添加空格和连字符作为有效字符。空格和爆炸可以出现在字符串中的任何位置
答案 0 :(得分:2)
根据问题下方的其他规范(在评论中),OP希望匹配任何不是字母数字字符,连字符或空格的内容,但多个空格除外。对于这些规范,可以使用以下正则表达式:
[^a-zA-Z0-9\s-]+| {2,}
[^a-zA-Z0-9\s-]+
匹配集合中不包含的任何字符中的一个或多个
{2,}
匹配空格字符2次或更多次要仅匹配两个或更多个连字符,您可以使用[^a-zA-Z0-9\s-]+| {2,}|-{2,}
如果您希望保留单个空格字符(并删除后面的空格),则可以使用以下内容。第二个正则表达式为连字符添加了相同的功能:
[^a-zA-Z0-9\s-]+|(?<= ) +
[^a-zA-Z0-9\s-]+|(?<= ) +|(?<=-)-+
答案 1 :(得分:0)
看起来您的问题几乎可以自行解决?或者您正在寻找Java代码来做您想做的事情吗?
您是否真的想要允许空格,制表符或换行符等任何空白字符?或者你只想留空间?
这是一个不是字母,数字,空格或连字符的单个字符:
[^a-zA-Z0-9 -]
这里有一串符合上述要求的字符:
[^a-zA-Z0-9 -]+
这是一个在正则表达式中测试内容的简单网站:https://regexr.com/