【问题标题】:Check if a string has no alphabets检查字符串是否没有字母
【发布时间】:2019-06-03 06:51:54
【问题描述】:

我正在尝试查找字符串是否只有数字和特殊字符。

我尝试了下面的代码,但它不起作用

String text="123$%$443";
String regex = "[0-9]+";
String splChrs = "-/@#$%^&_+=()" ;
if ((text.matches(regex)) && (text.matches("[" + splChrs + "]+"))) {
  System.out.println("no alphabets");
}

【问题讨论】:

  • “没有字母”是什么意思?如果您的意思是“不包含字母”,您只需要检查它是否在某处包含字母
  • 你的两个正则表达式和逻辑 &&not 检查 text 是否包含 no 字母 [a-z]
  • 只有英文字母还是没有字母?

标签: java regex


【解决方案1】:

只需使用^ 排除字母:

[^a-zA-Z]+

demo

【讨论】:

【解决方案2】:

如果你想检查text 不包含任何字母[A-Za-z],试试这个:

if (!text.matches("[A-Za-z]+")) {
  System.out.println("no letters");
}

如果您想检查 text 仅包含数字和给定的特殊字符,请尝试以下操作:

String regex = "[0-9\\-/@#$%^&_+=()]+";
if (text.matches(regex)) {
  System.out.println("no letters");
}

请注意,- 必须被 \ 转义,\ 本身必须被转义。

【讨论】:

  • 双引号“也是特殊字符怎么加?
  • 如何添加反斜杠 \
  • String regex="[0-9\\-/@~#$%!^&'*,-./:\"`;?{}|_+=() \\s]+"; 我现在这样使用我必须添加反斜杠 \ 和方括号 [ ]。如何添加它?如果我错过了任何特殊字符,请告诉我。
【解决方案3】:

这里有几种可能适用于各种要求的解决方案:

文本不得包含纯 ASCII 字母

if (text.matches("\\P{Alpha}+")) {
  System.out.println("No ASCII letters");
}

文本不能有来自整个 BMP 平面的字母

if (text.matches("\\P{L}+")) {
  System.out.println("No Unicode letters");
}

文字不能有alphabetic chars

if (text.matches("\\P{IsAlphabetic}+")) {
  System.out.println("No alphabetic chars");
}

*注意:IsAlphabetic 类包括LNl(字母编号)和Other_Alphabetic 类别,可能过于宽泛,但如果您需要检查字母和变音符号,则很好。

String#matches 方法需要完整的字符串匹配,因此上述代码 sn-ps 中没有使用锚点(^/\A$/\z)。

【讨论】:

    【解决方案4】:

    在 java regex 中,'match' 和 'find' 是不同的方法。如果您的字符串只包含您想要查找的字母,请使用 'find'。或者如果您想匹配整个字符串,请使用 'match'

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2016-09-20
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 2015-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多