【问题标题】:javascript Regex split UpperCase from lowerCasejavascript 正则表达式从小写拆分大写
【发布时间】:2017-12-30 03:46:21
【问题描述】:

我得到了一个类似的字符串:

var str = new Array( 
"Inverted HFFSfor Primary Wrap Or Secondary Multi Wrap",
"HFFSwith PDSPbackgroud Feederlense & Product Alignerigit",
"HFFSwith Cooler JKLHbetween Feeder & Product Aligner")

如何分离,即

1) HFFSfor 变为 HFFS for

2) HFFSwith 变为 HFFS with

3) PDSPbackgroud 成为 PDSPbackgroud

4) JKLHbetween 变为 JKLH between

等等……

我的第一个本能是这样的:

for(var i = 0; i<_str.length; i++){ 
if( (/*The needed Regex*/).test(_str[i]) ){


     }  
}

没有成功....似乎无法进一步思考!

请帮忙,谢谢

【问题讨论】:

  • 您的大写范围后没有+
  • 用 .test() 测试仍然没有成功...请删除您的 DownVote。谢谢
  • .replace 方法不接受正则表达式作为其替换参数。

标签: javascript regex string uppercase lowercase


【解决方案1】:

indexOf 不接受 rgex,您可以像这样使用 .replace

你可以使用:

var repl = str.replace(/\B([a-z](?=[A-Z])|[A-Z](?=[a-z]))/g, '$1 ');

RegEx Demo

RegEx 拆分:

  • \B: 断言单词边界不存在的位置
  • (: 开始捕获组#1
    • [a-z](?=[A-Z]):如果前面有大写字母,则匹配小写字母
    • |:或者
    • [A-Z](?=[a-z]):如果前面有小写字母,则匹配大写字母
  • ):结束关闭组#1

【讨论】:

  • 这工作得很好(已接受)...请投票赞成这个问题,因为它是一个有效的问题。谢谢
【解决方案2】:

您可以试试这个,捕获由多个大写字母(作为一组)和小写字母(作为另一组)组成的单词,然后在两组之间添加一个空格:

var str = new Array( 
"Inverted HFFSfor Primary Wrap Or Secondary Multi Wrap",
"HFFSwith PDSPbackgroud Feederlense & Product Alignerigit",
"HFFSwith Cooler JKLHbetween Feeder & Product Aligner")

console.log(
  str.map(s => s.replace(/([A-Z]{2,})([a-z]+)/g, "$1 $2"))
)

【讨论】:

    猜你喜欢
    • 2016-11-12
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 2019-07-09
    相关资源
    最近更新 更多