如何通过Regex实现一些复杂的验证?

时间:2019-07-06 04:32:59

标签: regex flutter dart

我从StackOverFlow问题/答案中尝试了很多方法,但无法实现以下验证。

1)长度至少应为4个字符
2)仅允许使用字母数字字符和“-”
3)不允许两个“-”在一起
4)密码不得以“-”开头或结尾

抱歉可能很简单,但我是regex的新手。

2 个答案:

答案 0 :(得分:1)

不是那么简单,我的猜测是,也许这个表达式

app.config(['$locationProvider', function($locationProvider) {
    $locationProvider.html5Mode(false).hashPrefix('');
}]);

可能具有所需的规则。

DEMO

this demo的右上角解释了该表达式,如果您想进一步探索或修改它,并且在this link中,您可以观察它如何与某些示例输入匹配,如果你喜欢。

RegEx电路

jex.im可视化正则表达式:

enter image description here

答案 1 :(得分:1)

您可以使用以下正则表达式:

^(?!^-|.+-{2,}|.+-$)[A-Za-z\d-]{4,}$
  • ^匹配字符串的开头
  • (?!^-|.+-{2,}|.+-$)负向查找,以防止在字符串的开头和结尾以及多个-处匹配-
  • [A-Za-z\d-]{4,}匹配至少四个字母和/或数字,带有或不带有一个-
  • $匹配字符串的结尾

Demo