转义“飞镖中的正则表达式

wei*_*wei 3 dart flutter

我试图在飞镖正则表达式中捕获符号。我的正则表达式如下所示:

  RegExp containsSymbolRegExp = RegExp(r"[-!$%^&*()_+|~=`{}\[\]:;'<>?,.\/]");
Run Code Online (Sandbox Code Playgroud)

但是,我还需要让它抓住符号“我不能粘在那里”,因为它与字符串混淆。任何想法如何做到这一点?谢谢。

编辑:jamesdlin 的回答非常适合飞镖。但它不适用于我的颤振应用程序,所以我认为它与颤振有关。这是我将其应用于的代码:

TextEditingController _passwordController = TextEditingController();
bool containsSymbol;

RegExp containsSymbolRegExp = RegExp(r"[-!$%^&*()_+|~=`{}#@\[\]:;'<>?,.\/"
      '"'
      "]");

void _handleChange(text) {
    setState(() {
        containsSymbol = containsSymbolRegExp.hasMatch(_passwordController.text);
    });
    print(containsSymbol); // always prints false for " ' \ but works for all other symbols
  }

Widget _textField(controller, labelText) {
  return Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: <Widget>[
      Text(labelText, style: TextStyle(fontSize: 11)),
      Container(
        width: MediaQuery.of(context).size.width * 0.9,
        height: 35,
        child: TextField(
          onChanged: _handleChange,
          style: TextStyle(fontSize: 20),
          keyboardType: TextInputType.text,
          controller: _passwordController,
          cursorColor: Colors.grey,
          decoration: InputDecoration(
              focusedBorder: UnderlineInputBorder(
                  borderSide: BorderSide(color: Colors.grey))),
        ),
      ),
    ],
  );
}
Run Code Online (Sandbox Code Playgroud)

Max*_*mer 7

更好的解决方案是使用三元组"作为字符串的开头和结尾。

在这种情况下,"字符串不会结束。

尝试这个:

RegExp containsSymbolRegExp = RegExp(r"""your_regexp_here""");
Run Code Online (Sandbox Code Playgroud)

也可以用撇号来完成,如下所示:

RegExp containsSymbolRegExp = RegExp(r'''your_regexp_here''');
Run Code Online (Sandbox Code Playgroud)


jam*_*lin 5

您可以利用相邻字符串文字的字符串连接,并使用单引号字符串或使用"转义的非原始字符串:

RegExp(
  r"[-!$%^&*()_+|~=`{}\[\]:;'<>?,.\/"
  '"'
  "]");
Run Code Online (Sandbox Code Playgroud)

或者,您始终可以使用带有更多转义符的非原始字符串:

RegExp(
  "[-!\$%^&*()_+|~=`{}\\[\\]:;'<>?,.\\/\"]");
Run Code Online (Sandbox Code Playgroud)

虽然那更麻烦。


归档时间:

查看次数:

1048 次

最近记录:

4 年,4 月 前