包含[A-Z] [a-z] [0-9] [\ s] [ - ]以外的任何字符串的正则表达式

时间:2018-02-13 21:15:06

标签: java regex string

目前我有

            Pattern p = Pattern.compile("[^a-zA-Z0-9]");
            boolean invalidChar = p.matcher("text").find();

要查找无效字符,如果它们不是字母和数字,但我还想添加空格和连字符作为有效字符。空格和爆炸可以出现在字符串中的任何位置

2 个答案:

答案 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/