带-取中划线后面的,不带取当前
dingdan-danhao => danhao
dingdan => dingdan
let str = dingdan-danhao
大概明白了意思,优先取-后的值,不满足则取当前字符串。
看使用场景,如果a-b-c...,取最后-后的值的场景下,
1.分割方法,简单明了,按照分割符分割后,取最后一个有效值。字符串.split("-").pop()
2.正则, 通过替换的方式,其中\w
根据具体情况去调整。字符串.replace(/\w+-/g,"")
非正则写法
function cb(string = ''){
const arr = string.split('-')
return arr[1] || arr[0]
}
let str = 'dingdan-danhao'
cb(str) // 'danhao'
let str = 'dingdan-danhao'
str = str.split('-')[1] || str // 'danhao'
const str = "dingdan-danhao";
const match = /-([^\-]+)/.exec(str) ?? [];
const result = match[1] ?? str;
console.dir(result);
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
str.match(/\w+$/)[0]
-刚好是不属于\w的字符。如果单词是空格或者其他不属于\w的字符分隔但仍然要匹配的话那就换成:
str.match(/[^-]+$/)[0]