我想要一个正则表达式,它可以找到括号中存在的字符串并将其删除,就像我希望在其中执行以下示例字符串一样:
09373 837 937 (mobile) // Output should be "09373 837 937"
9838373838 (home) // Output should be "9838373838"
+19383947388 (home) // Output should be "+19383947388"
(938)3947388 (mobile) // Output should be "(938)3947388"
因此,第一部分始终是联系号码,可以是任何格式,最后一部分始终是标签,我想删除该标签
最佳答案
您可以使用
.replace(/\s*\([^()]*\)$/, '')
请参阅regex demo .
如果您需要确保只删除水平空格*,请将 \s*
替换为 [^\S\r\n]*
.
模式解释:
\s*
- 零个或多个空格(替换为[^\S\r\n]
以匹配水平空格,即\s
并从中“减去”了\r
和\n
)\(
- 文字(
符号[^()]*
- 除(
和)
之外的零个或多个符号(替换为[^)] *
如果括号内可以有(
)\)
- 结束)
$
- 字符串结尾。
var re = /\s*\([^()]*\)$/g;
var strs = ['09373 837 937 (mobile)','9838373838 (home)','+19383947388 (home)','(938)3947388 (mobile)'];
for (var s = 0; s < strs.length; s++) { // Demo
document.body.innerHTML += "Replacing in \"<i>" + strs[s] + "</i>\"... ";
document.body.innerHTML += "Result: <b>\"" + strs[s].replace(re, '') + "\"</b><br/>";
}
关于javascript - 删除字符串末尾括号内的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37879194/