我在创建与*|VALUE|*
我想删除*|
和|*
,但我使用的正则表达式仅检测*|
str = *|VALUE|*
str.replace(/(^\*\||\|\*$)/, '') // VALUE|*
OR运算符似乎没有触发。
答案 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)