我正在用Angular 6开发一个项目,我需要通过使用带有正则表达式的replace方法将字符串替换为3个模式,即“空格”,“与”和“或”。我可以使用“和”和“或”来做到这一点,但是不能通过添加“空格”来做到。用户将在搜索框中输入由3种模式中的任何一种分隔的单词。
这有效:
const value = new RegExp(searchValue.toLowerCase().replace(/ and | or /g, '|'));
// Input: apple and pear or corn
// Output: /apple|pear|corn/
这不起作用:
const value = new RegExp(searchValue.toLowerCase().replace(/ \S+ | and | or /g, '|'));
我知道要用空格替换.replace(/ /g, '|'))
,但是我需要使用和“ and”和“ or”的空格相同的方法。
这如何完成?先感谢您。
答案 0 :(得分:4)
在正则表达式末尾使用\ s +
错误1:您使用\ S代替了\ s。
\ S匹配空格以外的其他字符。等效于[^ \ f \ n \ r \ t \ v \ u00a0 \ u1680 \ u2000- \ u200a \ u2028 \ u2029 \ u202f \ u205f \ u3000 \ ufeff]。
错误2:您在正则表达式的开头使用了\ s
const value = new RegExp(searchValue.toLowerCase().replace(/ and | or |\s+/g, '|'));
let searchValue = "apple and pear or corn banana"
const value = new RegExp(searchValue.toLowerCase().replace(/ and | or |\s+/g, '|'));
console.log(value)