Javascript 正则表达式-仅获取文本/数字和其他

Javascript 正则表达式-仅获取文本/数字和其他,javascript,regex,Javascript,Regex,我有一些字符串需要应用正则表达式来重新格式化 以下是一些例子: 树木日志和火灾(TLF) 离开 River Moon(RM) 大小写、间距和格式正是字符串的显示方式 我的目标是将其转化为以下内容: tree log fire 离开 river moon 正如您可能注意到的,&不见了,任何在末尾有(xx)的字符串都被丢弃了 我正在使用JavaScript.replace()并尝试加入一个匹配(),但它不起作用 示例代码: let newString = oldString .match(/

我有一些字符串需要应用正则表达式来重新格式化

以下是一些例子:

树木日志和火灾(TLF)

离开

River Moon(RM)

大小写、间距和格式正是字符串的显示方式

我的目标是将其转化为以下内容:

tree log fire

离开

river moon

正如您可能注意到的,
&
不见了,任何在末尾有
(xx)
的字符串都被丢弃了

我正在使用JavaScript
.replace()
并尝试加入一个
匹配()
,但它不起作用

示例代码:

let newString = oldString
    .match(/[^]+(?=\s\()/)
    .replace(/[^A-Z0-9]+/ig, '-')
从理论上讲,这是可行的,但我似乎无法将.replace链接到.match。另外,我更喜欢一行正则表达式。我一直在尝试组合,但我知道在正则表达式方面可能有人比我聪明一点


谢谢你的帮助

这可能不是最有效的方法,但是

let str=“树日志和火灾(TLF)”;
str=str.replace(/\([^()]*\)/,“”)
.replace(/[^A-Z0-9]+/ig,'-')。replace(/\-$/,'').toLowerCase();
console.log(str)如果存在匹配项,则返回数组。因此,要获得匹配的组,您必须在调用
.replace()
之前对
.match()
的结果使用
[0]

go('Tree Log&Fire(TLF));
走(‘叶’);
围棋(“月亮河(RM)”;
函数go(oldString){
var newString=oldString

.match(/[^]+(?=(\s\())。+/)[0]//您不能将
replace
链接到
match
match
返回一个数组,而
replace
在字符串上操作谢谢,这很有帮助!请尝试
s.split(/^a-Za-z()]+[^()]*)/).filter(布尔)。map(函数(x){return x.toLowerCase())。join(“-”)
谢谢@acdcjunior,我错过了那个额外的正则表达式和
[0]
!它现在正在做它应该做的事情!