我正在尝试在Dart中实现正则表达式,以确保字符串最多可以包含20个字符(字母数字),但可以包含空格和破折号,也不能为空。我尝试了几种不同的解决方案,但无法兑现“空白字符串”的否定前瞻。这就是我现在所拥有的:
^(?!\s*\$)[a-zA-Z0-9- ]{1,20}\$
我想念什么?
最佳答案
您已经避开了$
标志,因此,它不会使用行末字母,而是使用字母“$”,我敢肯定您不会。尝试以下方法:
RegExp(r'^(?!\s*$)[a-zA-Z0-9- ]{1,20}$');
我可以建议使用这样的站点尝试调试RegExp,这很好地解释了解析的每个部分:https://regex101.com/