正则表达式只包含Java字符串上的ASCII字符

huangapple go评论75阅读模式
英文:

regex to contain only ascii chars on string on java

问题

我尝试在Java中使用正则表达式验证字符串以匹配所有ASCII字符。
如果只有ASCII字符,则返回true;如果有任何一个不是ASCII字符的字符,则返回false。

我尝试了以下代码:

Pattern.compile("[^ -~\\r\\n\\t]+").matcher(password).find();

我还尝试了这个代码:

Pattern.compile("[^\\Q A-Za-z0-9!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\\E]").matcher(password).find();

但是都没有起作用。
我要验证的字符串是:

"abตcdefgh12+"

但是这两段代码都返回了true,这意味着它只包含ASCII字符,但实际上并不是。我希望这个字符串返回false。

谢谢!

英文:

im trying to validate string to match all ascii chars on java with regex.
if there is only ascii chars return true, if there is even single char which is not ascii char return false.

i tried the following:

Pattern.compile(&quot;[^ -~\\r\\n\\t]+&quot;).matcher(password).find();

and also tried this:

Pattern.compile(&quot;[^\\Q A-Za-z0-9!\&quot;#$%&amp;&#39;()*+,-./:;&lt;=&gt;?@[\\]^_`{|}~\\E]&quot;).matcher(password).find();

but it didnt worked.
the string im trying to validate:

&quot;abตcdefgh12+&quot;

but both codes return to me true, which means its contains only ascii chars which is not... i want that this string will return false.

thanks!

答案1

得分: 2

尝试这个:

public static boolean isPureAscii(String s) {
    return Charset.forName("US-ASCII").newEncoder().canEncode(s);
}

参考资料: https://docs.oracle.com/javase/1.5.0/docs/api/java/nio/charset/Charset.html

英文:

Try this:

public static boolean isPureAscii(String s) {
		return Charset.forName(&quot;US-ASCII&quot;).newEncoder().canEncode(s);
}

Reference: https://docs.oracle.com/javase/1.5.0/docs/api/java/nio/charset/Charset.html

huangapple
  • 本文由 发表于 2020年4月8日 00:45:44
  • 转载请务必保留本文链接:https://go.coder-hub.com/61085092.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定