java如何使用正则表达式限制特殊字符的个数

目录
  • 使用正则表达式限制特殊字符的个数
  • java判断限定字符的正则

使用正则表达式限制特殊字符的个数

package com.l.dubbo.service;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ThreadPoolTest {
    public static boolean check1(String context, String regEx) {
        Pattern pattern = Pattern.compile(regEx);
        Matcher matcher = pattern.matcher(context);
        String ss = "";
        String s2 = "";
        boolean flag = true;
        int count = 0;
        //符合正则表达式的子段为特殊符号
        //比较子段是否重复  若重复则特殊符号种类不止一种
        while (matcher.find()) {
            if (count == 0) {
                ss = matcher.group();
//                System.out.println(ss);
            } else {
                s2 = matcher.group();
//                System.out.println(s2);
            }
            if (!(ss).equals(s2) && count > 0) {
                flag = false;
            }
            count++;
        }
//        System.out.println(count);
        return flag;
    }

    public static boolean check2(String context, String regEx) {
        Pattern pattern = Pattern.compile(regEx);
        Matcher matcher = pattern.matcher(context);
        boolean flag = false;
        //利用set的元素不能重复,来检查是否只有一种特殊符号
        Set<String> set = new HashSet<String>();
        while (matcher.find()) {
            set.add(matcher.group());
        }
        if (set.size() == 1) {
            flag = true;
        }
        return flag;
    }

    public static void main(String[] args) {
        //s1中只包含'!‘一种特殊字符
        String s1 = "dasd!a22!!!!";
        //s2中包含'!‘和'@‘两种特殊字符
        String s2 = "dasd!a22@!!!";
        String regEx = "((?=[\\x21-\\x7e]+)[^A-Za-z0-9])";
        System.out.println(check1(s1, regEx));
        System.out.println(check1(s2, regEx));
        System.out.println(check2(s1, regEx));
        System.out.println(check2(s2, regEx));
    }
}

输出结果

true
false
true
false

Process finished with exit code 0

java判断限定字符的正则

判断答案是否是ABCD的正则

public class Test {
    public static void main(String[] args){
        Pattern pattern = Pattern.compile("^[A-D]+$");
        System.out.println(pattern.matcher("A").find());
        System.out.println(pattern.matcher("E").find());
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java利用正则表达式处理特殊字符的方法实例

    前言 一串字符串中有特殊符号,可能会影响到相关接口业务,所以需要把字符串中的特殊字符都过滤掉 百度上面搜索大部分处理方法是通过正则表达式, 他需要处理的特殊符号都写进正则表达式中去校验, 这种方式一眼看过去就非常别扭, 感觉不灵活, 万一需要过滤其他的又得临时加进去 解决方案 如下所示 public static String stringFilter (String str){ String regEx="[\\u00A0\\s\"`~!@#$%^&*()+=|{}':;',

  • 正则表达式匹配各种特殊字符

    写个可以匹配一下各种特殊字符的正则表达式 ((?=[\x21-\x7e]+)[^A-Za-z0-9]) x21-\x7e]+)[^A-Za-z0-9]) 这个匹配所有键盘上可见的非字母和数字的符号 var patrn = /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%--&*()--\-+={}|<>?:""[].:'',..]/im; if (!patrn.test(str)) {// 如果

  • Java正则表达式处理特殊字符转义的方法

    正则需要转义字符 '$', '(', ')', '*', '+', '.', '[', ']', '?', '\\', '^', '{', '}', '|' 异常现象: java.util.regex.PatternSyntaxException: Dangling meta. character '*' near index 0 解决方法 对特殊字符加\\转义即可. 注意:虽然使用[]在部分条件下也可以,但是在对于(.[.{范围边界开始符不匹配的情况下会报如下: 异常现象 java.util.

  • java如何使用正则表达式限制特殊字符的个数

    目录 使用正则表达式限制特殊字符的个数 java判断限定字符的正则 使用正则表达式限制特殊字符的个数 package com.l.dubbo.service; import java.util.HashSet; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ThreadPoolTest { public static boolean check1

  • JAVA 统计字符串中中文,英文,数字,空格,特殊字符的个数

    引言 可以根据各种字符在Unicode字符编码表中的区间来进行判断,如数字为'0'~'9'之间,英文字母为'a'~'z'或'A'~'Z'等,Java判断一个字符串是否有中文是利用Unicode编码来判断,因为中文的编码区间为:0x4e00--0x9fbb, 但通用区间来判断中文也不非常精确,因为有些中文的标点符号利用区间判断会得到错误的结果.所以通过Character.UnicodeBlock来进行判断.代码如下: package cn.csrc.base.count; public class

  • Java编程中正则表达式的用法总结

    1. 字符串中的正则表达式 使用正则表达式可以对字符串进行查找.提取.分割.替换等操作.String类当中提供了如下几个特殊方法: boolean matches(String regex):判断该字符串是否匹配指定的正则表达式. String replaceAll(String regex, String replacement):将该字符串中所有匹配regex的子串替换成replacement. String[] split(String regex):以regex作为分隔符,把该字符串分割

  • Java中使用正则表达式处理文本数据

    本文将介绍如何在Java中使用正则表达式来处理文本数据.正则表达式就是一个字符串,但和普通的字符串不同的是,正则表达式是对一组相似字符串的抽象,如下面的几个字符串: a98b   c0912d   c10b   a12345678d   ab 我们仔细分析上面五个字符串,可以看出它们有一个共同特征,就是第一个字符必须是'a'或'c',最后一个字符必须是'b'或'd',而中间的字符是任意多个数字组成(包括0个数字).因此,我们可以将这五个字符串的共同特点抽象出来,这就产生了一个正则表达式:[ac]

  • Java实现在正则表达式中控制大小写的方法

    本文实例讲述了Java实现在正则表达式中控制大小写的方法.分享给大家供大家参考,具体如下: 默认是:区分大小写的: 传递标志参数:Pattern.CASE_INSENSITIVE,以说明匹配时忽略大小写: 如果你的代码运行在不同的地区那么你应该再添加一个Pattern.UNICODE_CASE标志. import java.util.regex.Pattern; /** * Created by Frank * 在正则表达式中控制大小写 */ public class CaseMatch { p

  • 详解java中的正则表达式

    判断目标字符串中是否 可能 含这个字符. 假如待匹配字符串包含指定字符串并且匹配正则表达式,则为真,假如待匹配字符串不包含指定字符串但是匹配正则表达式,也为真,假如其他情况为假. 看一段简单的代码示例: private static String s = "1"; public static void main(String[] args) { testOne(s); } private static void testOne(String s){ System.out.println

  • 如何在Java中使用正则表达式API

    目录 Java正则表达式包 简单的例子 Meta Characters元字符 Character类 OR NOR Range类 Union类 Intersection类 Subtraction类 前言: 在正则表达式的世界中,有许多不同的风格可供选择,比如grep.Perl.Python.PHP.awk等等.这意味着在一种编程语言中工作的正则表达式可能在另一种编程语言中不工作.Java中的正则表达式语法与Perl中的最相似.要在Java中使用正则表达式,我们不需要任何特殊设置.JDK包含一个特殊

  • java如何用正则表达式匹配与提取字符串

    java.util.regex类支持用正则表达式来匹配和提取字符串,读者可以去官网查看java.util.regex的详细使用方法. 首先给出一个匹配字符串的例子(判断line是否符合格式"GraphType\\s*=\\s*\".+\"\\s*"): public static boolean isLegalInputLine(String line ) { Pattern p =Pattern.compile("GraphType\\s*=\\s*\&

  • Java利用位运算实现比较两个数的大小

    目录 题目要求 主要思路 方法1(不考虑溢出) 方法2(考虑溢出情况) 题目要求 如何不要用任何比较判断符(>,==,<),返回两个数( 32 位整数)中较大的数. 主要思路 方法1(不考虑溢出) 要比较 a 和 b 的大小,因为不能用比较符号,我们可以通过 a - b 的符号位来判断,如果 a - b 的符号位是 1,说明 a - b < 0,则 a 小,否则 a 大或者 a 和 b 相等. 如何判断一个数的符号位是 0 还是 1 ? 由于是 32 位整数,所以如果将一个数右移 31

随机推荐