如何在Java中过滤掉除了单词、数字和一些符号之外的所有内容?
所以我们有一个数据库列,它可以包含任何内容。Unicode、数字、单词等 但是,我们需要将数据发送到外部服务,他们对接受的内容非常严格。基本上,只有英语、单词、数字等 我们无法更改此服务的要求,因此我们需要先筛选用户发送给我们的内容,然后再发送给他们 我的正则表达式技能很弱。我们需要的是: 字符[a-zA-Z] 数字[0-9] 以下符号:!@$%^&*()-_=+;:',./?\ 就这样。当然,它可以是任何组合。我们只是想确保没有任何东西是没有列出的 任何关于如何用Java构建这个过滤器的帮助都将不胜感激 顺便说一句,我假设相同的正则表达式模式也适用于JavaScript 编辑 这是我的示例(使用Edmastermind29): 好吧,我知道怎么逃出那根绳子了。但是我怎样才能得到所有没有被过滤掉的东西呢?如何在Java中过滤掉除了单词、数字和一些符号之外的所有内容?,java,regex,Java,Regex,所以我们有一个数据库列,它可以包含任何内容。Unicode、数字、单词等 但是,我们需要将数据发送到外部服务,他们对接受的内容非常严格。基本上,只有英语、单词、数字等 我们无法更改此服务的要求,因此我们需要先筛选用户发送给我们的内容,然后再发送给他们 我的正则表达式技能很弱。我们需要的是: 字符[a-zA-Z] 数字[0-9] 以下符号:!@$%^&*()-_=+;:',./?\ 就这样。当然,它可以是任何组合。我们只是想确保没有任何东西是没有列出的 任何关于如何用Java构建这个过滤器的帮助都
[A-Za-z0-9!@$%^&*()\-,./?\]*
接受任意数量的大小写字符、任意数量的数字和任意数量的下列符号!@$%^&*()-_=+;:',./?\代码>如您在帖子中所述。[A-Za-z0-9!@$%^&*()\-\=+;:',./?\]*
接受任意数量的大小写字符、任意数量的数字和任意数量的下列符号!@$%^&*()-_=+;:',./?\
如您在文章中所述。在Javascript中,您只需构造一个onSubmit函数,该函数与正则表达式/^[A-Za-z0-9!@#$%^&*()-\u=+:',./?\]$/
匹配到输入,如果返回false,则不允许提交表单
注意,在Javascript中必须转义“\”字符,只需构造一个与正则表达式
/^[A-Za-z0-9!@$%^&*()-“=+;:”,./?\]$/匹配的onSubmit函数,如果返回false,则不允许提交表单
注意,您必须转义“\”字符,您需要迭代每个匹配的子序列并连接字符串。 对于给定的示例,解决方案如下所示:
public static void main( String[] args ) {
String pattern = "[A-Za-z0-9!@#$%^&*()-_=+;:',./?\\ ]*";
String text = "Hello, I need everything in this string except the { or }";
Pattern p = Pattern.compile( pattern );
Matcher m = p.matcher( text );
StringBuilder sb = new StringBuilder();
while( m.find() )
{
sb.append( m.group() );
}
String result = sb.toString();
System.out.println( "Result: '" + result + "'" );
}
您需要迭代每个匹配的子序列并连接字符串。 对于给定的示例,解决方案如下所示:
public static void main( String[] args ) {
String pattern = "[A-Za-z0-9!@#$%^&*()-_=+;:',./?\\ ]*";
String text = "Hello, I need everything in this string except the { or }";
Pattern p = Pattern.compile( pattern );
Matcher m = p.matcher( text );
StringBuilder sb = new StringBuilder();
while( m.find() )
{
sb.append( m.group() );
}
String result = sb.toString();
System.out.println( "Result: '" + result + "'" );
}
[a-zA-Z0-9!@$%^&*()\-\-\+;:',./?\]*
?为什么要添加标记“java”?因为这是我需要用Java解决的问题。但我以后也会用Javascript来做。我想知道是否可以在这两种语言中使用相同的正则表达式模式,但Java解决方案更为重要。@cbmeek在这种情况下,它将在两种语言中都能工作。btw,您可以将a-zA-Z0-9
和\uu
合并为\w
。请注意,在Java代码中,您需要避开反斜杠:\\w
[a-zA-Z0-9!@$%^&*()\-\=+;:',./?\]*
?为什么要添加标记“Java”?因为这是我需要用Java解决的问题。但我以后也会用Javascript来做。我想知道是否可以在这两种语言中使用相同的正则表达式模式,但Java解决方案更为重要。@cbmeek在这种情况下,它将在两种语言中都能工作。btw,您可以将a-zA-Z0-9
和\uu
合并为\w
。请注意,在Java代码中,您需要转义反斜杠:\\w
。顺便说一句:我必须在模式中包含“空格”字符才能得到预期的结果。这似乎非常有效。我授予您答案是因为您更正了我的代码。:-)顺便说一句:我必须在模式中加入“空格”字符才能得到预期的结果。这似乎非常有效。我授予您答案是因为您更正了我的代码。:-)