javascript - 正则表达式:从camelCase中提取大写字母
问题描述
我想问任何更有经验的人regex
他们将如何完成我的代码,以便它在每个前后都有小写字母的大写字母前面放置一个空格。
编码:camelCase.replace(/[a-zA-Z0-9][A-Z][a-zA-Z0-9]/g, match => { return " " + match})
例子:
const camelCase = "thisShouldBeSeparatedBySpace"
const wantedOutput = "this Should Be Separated By Space"
const currentOutput = "thi sShoul dBeSeparate dBySpace"
此外,正则表达式不应捕获电子邮件地址:
const email = "this.Is@NotSupposedToConvert.com"
const emailOutput = "this.Is@NotSupposedToConvert.com"
感谢您的任何想法!:)
解决方案
console.log(
'thisShouldBeSeparatedBySpace => ',
'thisShouldBeSeparatedBySpace'
.split(/([A-Z][a-z0-9]*)/)
.filter(item => (item !== ''))
.join(' ')
);/*
console.log(
'thisShouldBeSeparatedBySpace => ',
'thisShouldBeSeparatedBySpace'
.split(/((?<=[a-z0-9])[A-Z][a-z0-9]*)/)
.filter(item => (item !== ''))
.join(' ')
);
console.log(
'this.Is@NotSupposedToConvert.com => ',
'this.Is@NotSupposedToConvert.com'
.split(/([A-Z][a-z0-9]*)/)
.filter(item => (item !== ''))
.join(' ')
);
console.log(
'this.Is@NotSupposedToConvert.com => ',
'this.Is@NotSupposedToConvert.com'
.split(/((?<=[a-z0-9])[A-Z][a-z0-9]*)/)
.filter(item => (item !== ''))
.join(' ')
);*/
.as-console-wrapper { min-height: 100%!important; top: 0; }
编辑
由于 OP 确实改变了要求,人们可能会编写一个特定的清理函数,专门转换不具有任何非单词字符的字符串......
function sanitizeValidCamelCaseString(str) {
str = String(str);
return (/\W/g).test(str)
? str
: str
.split(/([A-Z][a-z0-9]*)/)
.filter(item => (item !== ''))
.join(' ');
}
console.log(
"sanitizeValidCamelCaseString('thisShouldBeSeparatedBySpace') :",
sanitizeValidCamelCaseString('thisShouldBeSeparatedBySpace')
);
console.log(
"sanitizeValidCamelCaseString('this.Is@NotSupposedToConvert.com') :",
sanitizeValidCamelCaseString('this.Is@NotSupposedToConvert.com')
);
.as-console-wrapper { min-height: 100%!important; top: 0; }
推荐阅读
- iframe - 如何使用 youtube iframe 提高页面速度
- tfs - Team Foundation Server 2018:在下拉值更改时设置字段值
- android - 如何将本机框架/库添加到颤振插件(不使用 cocoapods)?
- elasticsearch - 使用嵌套类型更新架构不起作用
- c# - 在用户/其他屏幕上显示选定/突出显示的文本
- python - 如何在数组中制作model.predict?
- ios - 静默推送通知在 ios 13 中不起作用
- amazon-web-services - 我们可以进行多少 AWS TextExtraction ConcurrentCall
- r - 下标越界。提取 PDF
- spring - 使用 Spring “Secured”注解授权端点