如何在 Dart 的正则表达式中允许存在单个空格,但允许其他字符为 1 个或更多?

问题描述 投票:0回答:1

我已经查看了大量的内容,所有内容都指向在正则表达式中添加一个空格,但它对我不起作用,你能解释一下为什么以及如何让它起作用吗?

现在我使用的表达式是这个,它是用 javascript 编写的,这意味着它允许用户使用 \s 来表示空格,但在 dart 中它只是一个空格“”。

RegExp(r'''^[\w\'\’\"_,.()&!*|:/\\–%-]+(?:\s[\w\'\’\"_,.()&!*|:/\\–%-]+)*?\s?$''');

我试图在字符串开头仅接受字母数字字符,然后在字符或单词之后应该只允许一个空格,但其他字符可以多于这个。

这就是我在代码中使用它的方式。

inputFormatters: [
                        RegexInputFormatter(featureRegex),
                 ],
class RegexInputFormatter extends TextInputFormatter {
  final RegExp regex;

  RegexInputFormatter(this.regex);

  @override
  TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
    final String newText = newValue.text;
    final String filteredText = _getFilteredText(newText);
    if (newText != filteredText) {
      final int selectionIndex = newValue.selection.end - (newText.length - filteredText.length);
      return TextEditingValue(
        text: filteredText,
        selection: TextSelection.collapsed(offset: selectionIndex),
      );
    }
    return newValue;
  }

例如,

接受的字符串:

  • abfed124
  • sfaasf(空格)1221
  • afasf(空格).124,(空格)aaf
  • 1242dsdd(空格)sddl,.!
  • 1242dsdd(空格)sddl,,...!!!!

不可接受的字符串:

  • (空格)(空格)asfa
  • (空格)asf112
  • @ajsfas
  • aas(空间)(空间)(空间),asa(空间)(空间)(空间)as
regex flutter dart regular-language
1个回答
0
投票

尝试这个正则表达式

RegExp regex = RegExp(r'^(?!.*\s\s)[\w,.! ]+$');
© www.soinside.com 2019 - 2024. All rights reserved.