如何删除* |在开始时和| *在字符串的结尾

时间:2018-01-21 13:48:36

标签: javascript regex

我在创建与*|VALUE|*

匹配的正则表达式时遇到问题

我想删除*||*,但我使用的正则表达式仅检测*|

str = *|VALUE|*
str.replace(/(^\*\||\|\*$)/, '') // VALUE|*

OR运算符似乎没有触发。

3 个答案:

答案 0 :(得分:3)

您的regex符合这两种情况。您不需要捕获组^\*\||\|\*$

您可以使用replace



var str = "*|VALUE|*";
str = str.replace(/^\*\||\|\*$/g, "");
console.log(str);




正如@melpomene在评论中提到的那样,你应该使用执行全局搜索的/g标志。

答案 1 :(得分:2)

(参考此问题'原始标题)/^\*\|.*\|\*$/匹配以*|开头并以|*结尾的字符串。

所以你可以这样做:



var str = '*|VALUE|*';
var trimmed = str.replace(/^\*\|(.*)\|\*$/, '$1');

console.log(trimmed);




或者使用原始正则表达式,但最后使用g(全局)。并且不要忘记.replace的第二个论点:



var str = '*|VALUE|*';
var trimmed = str.replace(/(^\*\||\|\*$)/g, '');

console.log(trimmed);




答案 2 :(得分:0)

根据您要执行的操作,您可能需要单独捕获正则表达式的每个部分,然后在str.replace内使用替换。 (MDN)。这可以帮助您将*|VALUE|*之类的字符串更改为(VALUE)之类的内容首先,您应该将内部更改为.*,这将简单地匹配您想要的两个符号之间的所有字符。

let str = `*|VALUE|*`
let result = str.replace(/^(\*\|)(.*)(\|\*)$/, "($2)")
console.log(result)