Java正则表达式,除\r和\n之外的所有ASCII
我正在尝试检查字符串是否包含除Java正则表达式,除\r和\n之外的所有ASCII,java,regex,Java,Regex,我正在尝试检查字符串是否包含除\r和\n之外的有效ASCII字符。我使用\p{ASCII}+作为有效ASCII的正则表达式,并且尝试了[\p{ASCII}+&&[^\n\r]]],但它似乎不起作用 您可以将所需的集合表示为[\x00-\x09\x0B\x0C\x0E-\x7F],该集合在逻辑上是[\x00-\x7F]集合,没有换行符(\x0A)和回车符(\x0D) 因为Java支持字符集减法,所以您也可以尝试[\x00-\x7F&&[^\x0A\x0D]]&在正则表达式中不表示“和”。@PM77
\r
和\n
之外的有效ASCII字符。我使用\p{ASCII}+
作为有效ASCII的正则表达式,并且尝试了[\p{ASCII}+&&[^\n\r]]]
,但它似乎不起作用 您可以将所需的集合表示为[\x00-\x09\x0B\x0C\x0E-\x7F]
,该集合在逻辑上是[\x00-\x7F]
集合,没有换行符(\x0A
)和回车符(\x0D
)
因为Java支持字符集减法,所以您也可以尝试
[\x00-\x7F&&[^\x0A\x0D]]
&
在正则表达式中不表示“和”。@PM77-1:在Java中是这样的。更准确地说,[\p{ASCII}&[^\n\r]]
是两个集合的交集,即所有ASCII字符和所有非换行符或回车符的字符。Java首先实现了它,但它现在是Unicode标准的一部分,我在一两个其他版本中看到过它。@OP,您的正则表达式应该可以工作。如果要验证,加号应该在括号外(在括号内,它是一个文字加号),并且必须锚定匹配。(如果未使用matches()
方法,则需要向正则表达式本身添加锚定:^[\p{ASCII}&[^\n\r]]+$
)