Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 10位或11位的正则表达式_Regex - Fatal编程技术网

Regex 10位或11位的正则表达式

Regex 10位或11位的正则表达式,regex,Regex,有人能告诉我下面正则表达式模式的含义吗 Pattern p1=Pattern.compile("^1?(\\d{10})"); Pattern p2=Pattern.compile("^1?([1-9])(\\d{9})"); 第一个正则表达式: ^-行或字符串的开头 1?-字符1零或一次重复 \d{10}-十位字符 第二个正则表达式: ^-行或字符串的开头 1?-字符1零或一次重复 [1-9]-除0 \d{9}-九位字符在我的头顶上,这些看起来像正则表达式来匹配我们的电话号码 第一个数字匹配

有人能告诉我下面正则表达式模式的含义吗

Pattern p1=Pattern.compile("^1?(\\d{10})");
Pattern p2=Pattern.compile("^1?([1-9])(\\d{9})");
第一个正则表达式:

^
-行或字符串的开头
1?
-字符
1
零或一次重复
\d{10}
-十位字符

第二个正则表达式:

^
-行或字符串的开头
1?
-字符
1
零或一次重复
[1-9]
-除
0


\d{9}
-九位字符

在我的头顶上,这些看起来像正则表达式来匹配我们的电话号码

第一个数字匹配由10位数字组成的数字,如果第一个数字是1,则匹配由11位数字组成的数字

  • 1?
    -可选择匹配1
  • \d
    -匹配0和9之间的数字(在Java中转义为
    \\d
  • {10}
    -将前面的字符匹配10次(在本例中为数字)
第二个数字与相同的模式匹配,但第一个(或第二个,如果有1)数字不能是0

  • 1?
    -可选择匹配1
  • [1-9]
    -匹配1到9之间的一个数字
  • \d
    -匹配0和9之间的数字(在Java中转义为
    \\d
  • {9}
    -将前面的字符匹配9次(在本例中为数字)

请注意,这两个表达式都以
^
开头,这意味着“仅在行首匹配”。还请注意,此处使用的括号用于捕获字符组,但不影响表达式的含义。

要解释正则表达式,您始终可以使用

正则表达式的输出:

Regex: ^1?(\d{10}) NODE EXPLANATION -------------------------------------------------------------------------------- ^ the beginning of the string -------------------------------------------------------------------------------- 1? '1' (optional (matching the most amount possible)) -------------------------------------------------------------------------------- ( group and capture to \1: -------------------------------------------------------------------------------- \d{10} digits (0-9) (10 times) -------------------------------------------------------------------------------- ) end of \1 正则表达式:^1(\d{10}) 节点解释 -------------------------------------------------------------------------------- ^字符串的开头 -------------------------------------------------------------------------------- 1? '1'(可选)(匹配最大金额 (可能的) -------------------------------------------------------------------------------- (组和捕获到\1: -------------------------------------------------------------------------------- \d{10}位(0-9)(10次) -------------------------------------------------------------------------------- )结束\1 正则表达式:^1([1-9])(\d{9}) 节点解释 -------------------------------------------------------------------------------- ^字符串的开头 -------------------------------------------------------------------------------- 1? '1'(可选)(匹配最大金额 (可能的) -------------------------------------------------------------------------------- (组和捕获到\1: -------------------------------------------------------------------------------- [1-9]任何“1”到“9”的字符 -------------------------------------------------------------------------------- )结束\1 -------------------------------------------------------------------------------- (分组并捕获到\2: -------------------------------------------------------------------------------- \d{9}位(0-9)(9次) -------------------------------------------------------------------------------- )结束\2
模式p1=Pattern.compile(“^1”(\\d{15})”;它是否匹配强制不以0开头的15位数字?它匹配不以1开头的15位数字,或者匹配以1开头的16位数字。
表示可选。如果您选择了“^1(\\d{14})”,则将匹配一个15位数字,该数字强制以1开头(一个[非可选]1,后跟14位其他数字)。如果您想要一个表达式匹配第一个非零的15位数字,它将是
“^[1-9]\\d{14}”
(并且您可以选择在要捕获的部分周围加上一些括号)。知道
“\\d”
扩展为
“[0-9]”
,可能会有所帮助,因此,我在前面的评论中给出的表达式可以同样容易地写成
“^[1-9][0-9]{14}”
,这非常清楚地表明它是“一个介于1和9之间的数字,后面是14个介于0和9之间的数字”。 Regex: ^1?([1-9])(\d{9}) NODE EXPLANATION -------------------------------------------------------------------------------- ^ the beginning of the string -------------------------------------------------------------------------------- 1? '1' (optional (matching the most amount possible)) -------------------------------------------------------------------------------- ( group and capture to \1: -------------------------------------------------------------------------------- [1-9] any character of: '1' to '9' -------------------------------------------------------------------------------- ) end of \1 -------------------------------------------------------------------------------- ( group and capture to \2: -------------------------------------------------------------------------------- \d{9} digits (0-9) (9 times) -------------------------------------------------------------------------------- ) end of \2