【问题标题】:User input sometimes breaks REGEX [duplicate]用户输入有时会破坏 REGEX [重复]
【发布时间】:2020-03-29 17:27:59
【问题描述】:

我有以下代码根据用户在输入字段中输入的内容过滤列表:

const searchQuery = e.target.value.trim();

items
  .filter((item) =>
    item.title.match(new RegExp(searchQuery, 'gi'))
  )
  .map(item => {
    // Do something...
  });

它工作得很好,除了当用户在输入字段中输入一些时髦的文本时一切都会中断,例如:

//on\/: \/: \

导致以下错误:

SyntaxError: Invalid regular expression: ///on\/: \/: \/: \ at end of pattern

如何正确处理此问题,以使我的代码不会因用户输入而中断?

【问题讨论】:

  • 如果您想在输入中允许使用正则表达式,那么您必须让用户知道正则表达式是否错误,否则您需要根据一般用户输入自己创建一个正则表达式,方法是预先添加和附加到输入
  • @MozenRath 我不想让用户输入正则表达式,我只是想防止我的代码格式被破坏(无论是有意还是无意)。所以我想我想知道如果这是正确的词,如何“逃避”用户的输入。
  • 希望对您有所帮助:stackoverflow.com/questions/3446170/…
  • 这怎么可能是重复的?

标签: javascript regex


【解决方案1】:

听起来您需要执行转义或某种类型的验证。这是JavaScript escape() Function 的链接。我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 2014-09-07
    • 2017-09-02
    • 2021-10-01
    • 1970-01-01
    • 2012-06-27
    • 2010-10-27
    相关资源
    最近更新 更多