Java匹配正则表达式

时间:2014-02-27 17:49:02

标签: java regex

有人知道这在java中意味着什么:

testNumber.matches("^800[25-9][2-9].*$") 

我主要与[25-9]混淆。

4 个答案:

答案 0 :(得分:1)

[]是一个子集。括号中的任何字符都将匹配。 5-9是从5到9的字符范围.2也是一个字符。因此[25-9]将匹配2,5,6,7,8和9。

答案 1 :(得分:1)

[25-9]表示25-9

中的任何字符

您可以从这里获得正则表达式的解释:http://rick.measham.id.au/paste/explain.pl

答案 2 :(得分:1)

以下是对正则表达式的解释:

<强> / ^ 800 [25-9] [2-9]。* $ /

  • ^断言字符串开头的位置
  • 800匹配字符800字面
  • [25-9]匹配下面列表中的单个字符
  • 2字面字符2
  • 5-9 5到9之间范围内的单个字符
  • [2-9]匹配下面列表中的单个字符
  • 2-9 2到9之间范围内的单个字符
  • 。*匹配任何字符(换行符除外)
  • 量词:在零和无限次之间,多次 可能,根据需要回馈[贪心]
  • $断言字符串末尾的位置

答案 3 :(得分:0)

基于http://regex101.com/https://www.debuggex.com/

^800[25-9][2-9].*$

Regular expression visualization

  • ^在字符串
  • 的开头断言位置
  • 800匹配字符800字面
  • [25-9]匹配下面列表中的单个字符
    • 2字面字符2
    • 5-9单个字符,范围在5到9之间
  • [2-9]匹配下面列表中的单个字符
    • 2-9单个字符,范围在2到9之间
  • .*匹配任何字符(换行符除外) *量词:在零和无限次之间,尽可能多次,根据需要回馈[贪心]
  • $断言字符串末尾的位置

换句话说,[...]character class。这意味着它匹配其中的一个字符,例如[123]表示它与1 2 3匹配。您也可以将此范围写为[1-3]

如果是[25-9],则表示它将匹配2或愤怒5-9中的一个数字56,{{1} },78