繁体   English   中英

Java RegEx - 非法字符点

[英]Java RegEx - Illegal character dot

String filter = "a-zA-Z0-9äöüÄÖÜß-\\.";
"^[^" + filter + "]*$", ""

inputtext.replaceAll("^[^" + filter + "]*$", "");

这个Java RegEx过滤器应该从inputtext中删除除过滤器中的字符之外的所有字符,但是我得到一个异常,说明不允许使用该点。 我已经用两个斜线逃脱了点。 怎么了?

移动-到最后:

String filter = "a-zA-Z0-9äöüÄÖÜß.-";

短划线表示字符范围,点不是范围的有效结束。 您也不想在那里定义范围。 将它移到最后可以解决问题。

顺便说一句。 如果要删除与过滤器不匹配的所有字符,则需要更改替换:

inputtext = inputtext.replaceAll("[^" + filter + "]", "");

你拥有它的方式,它只会替换所有字符都不在该类中。

以下工作对我来说很好:

    String str = "afjlajfdl;f2.3232A,&^%DFDF-";
    System.out.println(str.replaceAll("[^a-zA-Z0-9-.]", ""));

并产生输出:

afjlajfdlf2.3232ADFDF-

一般来说,你不应该逃避. []和替换模式中,您不应指定字符串(^,$)的开头和结尾以及多路复用器*

问题不在于你的正则表达式中的句号(点),而是前面的减号。 如果你也逃避了,事情会更好:

String filter = "a-zA-Z0-9äöüÄÖÜß\\-\\.";

旁注:我不确定使用正则表达式中使用的第一个和最后一个字符是否具有所需的效果。 也许你应该删除它们?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM