【发布时间】: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 我不想让用户输入正则表达式,我只是想防止我的代码格式被破坏(无论是有意还是无意)。所以我想我想知道如果这是正确的词,如何“逃避”用户的输入。
-
这怎么可能是重复的?
标签: javascript regex