如何在java正则表达式

时间:2018-04-12 14:12:24

标签: java regex

我有字母数字字符串,其中唯一的#.-是允许的特殊字符

我当前的正则表达式为^[a-zA-Z0-9][-#._ a-zA-Z0-9 ]+$

接受字符串Exam1,Exam#1,Exam1.1 但也接受Exam ##1,Exam 1..1

如何才能使其与特殊字符匹配

2 个答案:

答案 0 :(得分:0)

首先让我解释你的正则表达式

^[a-zA-Z0-9][-#._ a-zA-Z0-9 ]+$

从字符a-z or A-Z or 0-9开始,后跟至少一个或多个后续字符。

所以将特殊字符[-#.]移动到单独的字符类中并用其他字符[-#._ a-zA-Z0-9 ]

包围它
^[a-zA-Z0-9][_a-zA-Z0-9 ]+[-#.]?[_a-zA-Z0-9 ]+$

答案 1 :(得分:0)

我认为你说话意味着他们只能是一组特殊的字符,下面的陈述应该可以解决这个问题:

^[a-zA-Z0-9]

我会把它分解:

[a-zA-Z0-9 ]*表示必须以一个字母数字字符

开头

[-#.]*表示可能有以下字母数字字符

[a-zA-Z0-9 ]*表示字符串中的某个位置,可以有一系列特殊字符

*表示字符串可能以一系列字母数字字符或特殊字符结尾

第一和第二部分接近但不同,以防止在开头放置空格。

将特殊字符序列与import 'dart:io'; main() { Process.run('python', ['getLink.py']); } 包装在同一结构中的事实允许它在任何地方。

一些references