我正在尝试查看输入中是否只包含大写字母,数字和正则表达式中的句点。在Java中,正则表达式是什么样的?
是否有关于如何构建此正则表达式的指南,甚至是一些在线工具?
还可以使用正则表达式来检查字符串的长度是否不超过50?
答案 0 :(得分:4)
这是Unicode答案:
^[\p{Lu}\p{Nd}.]{0,50}$
\ 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