如果我在字符串中有三个或更多连字符,我需要在第二个连字符后从字符串子字符串获取。
例如,我有这个字符串:
"someStr3 - someStr4"
正如你所看到它有3个连字符,我需要从字符串上面的字符串中获取:
{{1}}
我知道我需要获取第二个连字符的索引位置然后我可以使用子字符串函数 但我不知道如何检查是否有超过3个连字符以及如何检查该位置是第二个连字符。
答案 0 :(得分:5)
您可以使用RegEx (?<=([^-]*-){2}).*
(?<=([^-]*-){2})
确保您的匹配前有-
(?<= ... )
是一个积极的背后隐藏
[^-]*
只匹配-
,0次或更多次
-
字面匹配-
.*
匹配这两个破折号之后的任何内容。
const data = "someStr1 - someStr2 - someStr3 - someStr4";
console.log(/(?<=([^-]*-){2}).*/.exec(data)[0]);
答案 1 :(得分:3)
将字符串拆分为包含-
的数组,并检查array.length > 3
是否意味着字符串中至少有三个-
。如果为true,则将数组从index == 2
加入到-
的末尾并修剪字符串。
var text = "someStr1 - someStr2 - someStr3 - someStr4"
var textArray = text.split('-')
if(textArray.length>3){
console.log(textArray.slice(2).join('-').trim())
}
&#13;
答案 2 :(得分:1)
这样的事情怎么样:
var testStr = "someStr1 - someStr2 - someStr3 - someStr4";
var hyphenCount = testStr.match(/-/g).length;
if(hyphenCount > 2){
var reqStr = testStr.split('-').slice(-2).join('-');
console.log(reqStr) // logs "someStr3 - someStr4"
}