我没有得到优化的正则表达式,它根据第一个空格出现将我拆分为字符串:
var str="72 tocirah sneab";
我需要得到:
[
"72",
"tocirah sneab",
]
原文由 Luca 发布,翻译遵循 CC BY-SA 4.0 许可协议
我没有得到优化的正则表达式,它根据第一个空格出现将我拆分为字符串:
var str="72 tocirah sneab";
我需要得到:
[
"72",
"tocirah sneab",
]
原文由 Luca 发布,翻译遵循 CC BY-SA 4.0 许可协议
Javascript 不支持后视,所以 split
是不可能的。 match
有效:
str.match(/^(\S+)\s(.*)/).slice(1)
另一个技巧:
str.replace(/\s+/, '\x01').split('\x01')
怎么样:
[str.replace(/\s.*/, ''), str.replace(/\S+\s/, '')]
那么为何不
reverse = function (s) { return s.split('').reverse().join('') }
reverse(str).split(/\s(?=\S+$)/).reverse().map(reverse)
或者可能
re = /^\S+\s|.*/g;
[].concat.call(re.exec(str), re.exec(str))
_2019 更新_:从 ES2018 开始,支持后视:
str = "72 tocirah sneab"
s = str.split(/(?<=^\S+)\s/)
console.log(s)
原文由 georg 发布,翻译遵循 CC BY-SA 4.0 许可协议
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
如果您只关心空格字符(而不是制表符或其他空白字符)并且只关心第一个空格之前的所有内容和第一个空格之后的所有内容,您可以在没有这样的正则表达式的情况下执行此操作:
请注意,如果根本没有空格,那么第一行将返回一个空字符串,第二行将返回整个字符串。确保这是您在那种情况下想要的行为(或者这种情况不会出现)。