将字符串替换为3种模式“空格”,“和”,“或”

时间:2018-11-21 14:45:04

标签: javascript regex string typescript

我正在用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”的空格相同的方法。

这如何完成?先感谢您。

1 个答案:

答案 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)