正则表达式匹配大写字符,数字和句点

时间:2012-03-08 21:27:57

标签: java regex

我正在尝试查看输入中是否只包含大写字母,数字和正则表达式中的句点。在Java中,正则表达式是什么样的?

是否有关于如何构建此正则表达式的指南,甚至是一些在线工具?

还可以使用正则表达式来检查字符串的长度是否不超过50?

6 个答案:

答案 0 :(得分:4)

这是Unicode答案:

^[\p{Lu}\p{Nd}.]{0,50}$

来自regular-expressions.info

  

\ p {Lu}或\ p {Uppercase_Letter}:具有小写变体的大写字母。

     

\ p {Nd}或\ p {Decimal_Digit_Number}:除表意文字脚本外的任何脚本中的数字0到9。

^$是字符串的开头和结尾

答案 1 :(得分:3)

正则表达式:

Pattern.compile("^[A-Z\\d.]*$")

检查字符串的长度:

Pattern.compile("^.{0,50}$")

两者合并:

Pattern.compile("^[A-Z\\d.]{0,50}$")

虽然如果我是你,我不会使用正则表达式检查长度,只需在字符串上调用.length()

答案 2 :(得分:1)

This网站对于构建和测试以及正则表达式非常方便

答案 3 :(得分:1)

在简单语法方面,Java中的正则表达式与其他语言有许多共同之处,例如,某些预定义的字符类添加的内容比您在Perl中找到的要多。 Java API docs on Pattern显示支持的各种模式。对Java中正则表达式的更友好的介绍是http://www.regular-expressions.info/java.html

一些非常快速的谷歌搜索显示,有很多工具可以在线测试Java正则表达式对输入字符串的影响。 Here is one

要检查您感兴趣的输入类型,以下正则表达式应该有效:

^[A-Z0-9.]{,50}$

分解,这是说:

^:从输入的开头开始匹配;不允许跳过第一个字符

[]:匹配此范围内的一个字符

A-Z:在一个范围内,-表示接受包含第一个和最后一个字符之间的所有值,因此在这种情况下,所有字符都是从A到Z。

0-9:将前一个范围添加到所有数字

.:句点在正则表达式中很特殊,但所有特殊字符在字符类([])中再次变得简单

{,50}:require(或0)匹配最多50个刚刚定义的字符类。

$:匹配必须到达输入的结尾;不允许跳过最后一个字符

答案 4 :(得分:0)

对于字符串,返回true,只包含50个可以是数字,大写字母或点的字符。

string.matches("[0-9A-Z\\.]{0,50}")

答案 5 :(得分:0)

为了回应您可以使用的工具,我更喜欢Regex Coach