英文字母的正则表达式,没有特殊字符或数字,32或更大

时间:2016-09-25 00:16:11

标签: java regex string

这是我第一次用Java或任何语言实现正则表达式。我试图创建两个不同的正则表达式。第一个正则表达式需要确保:

  1. 字符串为32或更大字符
  2. 该字符串仅包含英文字母
  3. 该字符串不包含数字
  4. 该字符串不包含任何特殊字符(!,@,#,$,%,^,&,*,(,), - ,_,+,=,。,,,>,< ,?,`,〜,/,|,\,{,},[,])
  5. 该字符串不包含任何空格或制表符
  6. 第二个正则表达式需要确保:

    1. 该字符串包含字母:L或字母R.
    2. L或R必须为大写
    3. 如果有人能够解释这两个过程,那将非常感激。

2 个答案:

答案 0 :(得分:1)

好的,我会尽力回答你的问题,并在不假设或猜测的情况下彻底解释!

这个答案建立在达拉斯S回答的问题之上(或者至少有一些相似之处)。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class App {
    public static void main(String[] args) throws Exception {
        String s = "ThisIsATestStringThatIsBeingUsedInThisExample";
        System.out.println("Test String Length: " + s.length());
        Pattern p = Pattern.compile("^[A-Za-z]{32,}$");
        Matcher m = p.matcher(s);
        System.out.println("Found = " + (m.find() ? "True" : "Flase"));
        if (m.find()) {
            String str = s.substring(m.start(), m.end());
            System.out.println("Result = " + str);
        }
    }
}

更多地解释正则表达式以及它与您问题的第一部分的关系: 根据您的要求,

  

该字符串仅包含英文字母

  

字符串不包含数字

  

该字符串不包含任何特殊字符(!,@,#,$,%,^,&,*,(,), - ,_,+,=,。,,,>,< ,?,`,〜,/,|,\,{,},[,])

  

字符串不包含任何空格或制表符

这被分为正则表达式中包含' [A-Za-z]' 代码的部分。这意味着此正则表达式可以接受任何大写或小写字母字符的字符类。

然后,对于您指定的部分:

  

字符串是32个或更多字符

这是通过' {32,}' 的代码部分来完成的。这告诉您查找需要32或更多的匹配项(因此逗号后面没有后续数字) )人物。

注意,正则表达式中的' ^' 符号会锚定字符串开头的匹配开始。此外,' $' 会在字符串末尾锚定匹配结束。

关于你问题的第2部分,我会简单地避免使用正则表达式,并按照Dallas S的建议,使用contains()调用来寻找' L'或者' R'字符。

查看here以获取有关java Pattern类的更多文档。 查看here以获取有关java Matcher类的更多文档。

(请接受此作为答案,如果它有效/帮助和社区请不要带走我的回复权力!我阅读反馈回答,不建议!)

干杯

答案 1 :(得分:0)

您可以使用正则表达式/[a-z]{32,}/i作为第一个问题。这将设置ignoreCase标志,允许a-z范围内的字符并允许32或更多。使用java的方式使用它看起来像:

myString.matches("(?i)[a-z]{32,}")

对于第二个,您可以使用.contains方法。

myString.contains("L") || myString.contains("R")

这两个表达式都会返回一个布尔值。