我有以下代码
<span id="{{policy.pname}}_query" class="policy-tag">{{policy.policy_groups[0].query}}</span>
和
的输出 policy.policy_groups[0].query
是tags:(taga || tagb || tagc)
我希望正则表达式删除第一个字符&#39;(&#39;,最后一个&#39;)&#39;并替换&#39; ||&#39;与&#39;,&#39;
所以最终输出为tags:taga,tagb,tagc
尝试过但没有运气。我可以从控制器执行此操作,但不能在html中执行此操作。 非常感谢任何帮助。
-kim
答案 0 :(得分:0)
基本上就是这样:
console.log(
'tags:(taga || tagb || tagc)'.replace(/\(|\)/g, "").replace(/\s*\|\|\s*/g, ",")
)
说明:
.replace(
/ <-- open regex
\( <-- find literal opening parenthesis
| <-- or
\) <-- find literal closing parenthesis
/g <-- in the whole string
, <-- "replace" method delimiter
"" <-- replace with empty string
)
.replace(
/ <-- open regex again
\s* <-- find zero or more spaces
\| <-- find a pipe
\| <-- find another pipe
\s* <-- find zero or more spaces after that
/g <-- in the whole string
, <-- "replace" method delimiter
"," <-- replace with commas
)
这个正则表达式假定你的标签中没有括号,如果不是这样,请告诉我,我会更新它以解决这个问题。
我希望有所帮助!
答案 1 :(得分:0)
假设您可以使用替换过滤器(https://www.npmjs.com/package/angularjs-filters)
<span id="{{policy.pname}}_query" class="policy-tag">{{policy.policy_groups[0].query | string.replace:"/([\(\)]| *\|{2} *)/": "," }}</span>
&#13;
答案 2 :(得分:0)
如果没有正则表达式,您也可以这样做。更详细,但更容易阅读和维护。
var string = policy.policy_groups[0].query;
var first = string.indexOf('(');
var last = string.indexOf(')');
string = string.substring(0, first) + string.substring(first + 1, last) + string.substring(last + 1);
string.split(' || ').join(',');