Java 正则表达式匹配字符,然后匹配数字

Java 正则表达式匹配字符,然后匹配数字,java,regex,Java,Regex,我知道以前有人问过这个问题,但我找不到解决办法 我正在尝试检查字符串是否与下一个模式匹配:大写或非字母“x”,然后是任意数字(无点或任何其他内容)。如果我了解您的要求: (x|X)[0-9]+ 第一个匹配“x”或“x”(|是或)。然后它匹配组[0-9]中的一个或多个字符,这些字符显然是数字。您可能需要 [xX]\d [xX]是与x或x匹配的 \d是匹配任何数字的 请注意,在字符串文本中,我们需要转义反斜杠:“[xX]\\d”您可以使用以下正则表达式: "(?i)^x\\d+$" (?i

我知道以前有人问过这个问题,但我找不到解决办法


我正在尝试检查字符串是否与下一个模式匹配:大写或非字母“x”,然后是任意数字(无点或任何其他内容)。

如果我了解您的要求:

(x|X)[0-9]+
第一个匹配“x”或“x”(|是或)。然后它匹配组[0-9]中的一个或多个字符,这些字符显然是数字。

您可能需要

[xX]\d
  • [xX]
    是与
    x
    x
    匹配的
  • \d
    是匹配任何数字的

请注意,在字符串文本中,我们需要转义反斜杠:
“[xX]\\d”

您可以使用以下正则表达式:

"(?i)^x\\d+$"
  • (?i)
    用于忽略大小写匹配以匹配x或x
  • \d+用于匹配1个或多个数字[0-9]

  • 这个的正则表达式是
    [xX]\d
    。括号中的内容是要匹配的字符列表。您希望匹配大写或小写的“X”,这样就完成了。然后你想匹配任何数字。这就是\d所做的\d表示“任何数字”。以下是如何在java代码中运行此功能:

    package com.sandbox;
    
    public class Sandbox {
    
        public static void main(String[] args) {
            String s = "x9";
            System.out.println(s.matches("[xX]\\d"));
        }
    }
    

    注意字符串中有两个反斜杠。这是因为
    \
    是转义字符。在java中,如果你想实际使用
    \
    符号,那么你必须通过键入
    \\

    来避开
    \
    符号。对不起,如果我的英语不是很好,希望你能理解,唯一需要澄清的是你所说的“任意数字”是什么意思。
    x542
    有效吗?或者只有一个位数,比如
    x5
    ?但是这个正则表达式能确保这个“x34g”不能工作吗?@Gigalala是的。将
    s
    更改为“x34g”,您会发现它不起作用。