起初,我认为下面的正则表达式不会匹配任何内容,因为它是空的:
const emptyText = ''
const regExp = new RegExp(`${emptyText}`)
console.log(regExp) // /(?:)/
const result = 'This shouldn\'t match'.match(regExp)
console.log(result)
但后来我意识到它将匹配 * 所有内容 *,因为所有内容都可以是/(?:)/
如何修改这个正则表达式(或代码),使一个空文本(''
)不匹配所有内容?
电流输出:
[
""
]
所需输出:
零值
2条答案
按热度按时间inb24sb21#
您指定的任务是在一个包含1个以上字符的字符串上得到一个与空正则表达式不匹配的结果。您没有指定在一个空字符串上得到一个空正则表达式的预期结果。假设您在两种情况下都预期为null,您可以定义一个与空正则表达式字符串输入永远不匹配的正则表达式:
输出量:
正则表达式说明:
^
-字符串起点处的锚(?=$)
-零字符的正向前查找.
--单个字符zfciruhq2#
您可以执行以下操作:
此处为:
^
匹配字符串的开头,$
匹配字符串的结尾。注意:返回值为
null
,表示(null
)或“根本没有值”赋给result
。更新:如果我们不能更改
emptyText
,我们可以在RegExp
构造函数中连接另一个字符串,如下所示:这里的
rx
保存正则表达式的值。