我已经收到了类似的字符串"Street number 1, Barcelona"
,或者,如果没有街道数据,"Barcelona"
我只是想通过单个正则表达式来表达模式并捕获城市数据。
我已经想出了一种模式,该模式可以选择不包含逗号的字符串中的所有内容...
^([^,]+)$
我也有一个正则表达式,用于在第一个逗号后捕获所有内容...
^.+?, (.*)$
是否可以将它们都合并为一个正则表达式和/或如何对其进行管理?
只是测试
如果OP的用例只是测试,遵循regex可能会有所帮助/^[^,]*,*[^,]+$/
。它读取如下...
/^ ... $/
在开始和结束之间...[^,]*
可选地匹配不是逗号的任何内容...,*
也许后面跟一个可选的逗号...[^,]+
紧跟着(或仅代表自己)至少一个不是逗号的字符。const regXOptionallySplittingComma = (/^[^,]*,*[^,]+$/);
console.log(
'test ... "" ?',
regXOptionallySplittingComma.test("")
);
console.log(
'test ... "," ?',
regXOptionallySplittingComma.test(",")
);
console.log(
'test ... " ," ?',
regXOptionallySplittingComma.test(" ,")
);
console.log('\n');
console.log(
'test ... " , " ?',
regXOptionallySplittingComma.test(" , ")
);
console.log(
'test ... ", " ?',
regXOptionallySplittingComma.test(", ")
);
console.log(
'test ... " " ?',
regXOptionallySplittingComma.test(" ")
);
console.log('\n');
console.log(
'test ... " Barcelona " ?',
regXOptionallySplittingComma.test(" Barcelona ")
);
console.log(
'test ... "Lloret de Mar" ?',
regXOptionallySplittingComma.test("Lloret de Mar")
);
console.log('\n');
console.log(
'test ... ", Barcelona " ?',
regXOptionallySplittingComma.test(", Barcelona ")
);
console.log(
'test ... ", Lloret de Mar " ?',
regXOptionallySplittingComma.test(", Lloret de Mar ")
);
console.log('\n');
console.log(
'test ... "Street number 1, Barcelona" ?',
regXOptionallySplittingComma.test("Street number 1, Barcelona")
);
console.log(
'test ... "Street number 1, Lloret de Mar" ?',
regXOptionallySplittingComma.test("Street number 1, Lloret de Mar")
);
console.log('\n');
console.log(
'test ... "Street, number 1, Barcelona" ?',
regXOptionallySplittingComma.test("Street, number 1, Barcelona")
);
console.log(
'test ... "Street number 1, Lloret de, Mar" ?',
regXOptionallySplittingComma.test("Street number 1, Lloret de, Mar")
);
.as-console-wrapper { min-height: 100%!important; top: 0; }
提取数据
如果OP的用例正在提取数据,例如获取字符串的右侧(可以用可选的逗号分隔),则可能的解决方案不一定需要基于正则表达式...
function extractTrailingNonCommaChars(str) {
const list = String(str).split(',');
// - without testing for a maximum two partials split
// - take always the last or most right handed partial ...
// return list[list.length - 1].trim();
// - with testing for a maximum two partials split ...
const count = list.length;
return (count <= 2) && list[count - 1].trim() || '';
}
console.log(
'"Street number 1, Barcelona " =>',
`"${ extractTrailingNonCommaChars("Street number 1, Barcelona ") }"`
);
console.log(
'", Lloret de Mar " =>',
`"${ extractTrailingNonCommaChars(", Lloret de Mar ") }"`
);
console.log(
'" Barcelona" =>',
`"${ extractTrailingNonCommaChars(" Barcelona") }"`
);
console.log(
'"Lloret, de Mar" =>',
`"${ extractTrailingNonCommaChars("Lloret, de Mar") }"`
);
console.log(
'",,," =>',
`"${ extractTrailingNonCommaChars(",,,") }"`
);
console.log(
'", " =>',
`"${ extractTrailingNonCommaChars(", ") }"`
);
console.log(
'" , " =>',
`"${ extractTrailingNonCommaChars(" , ") }"`
);
console.log(
'" " =>',
`"${ extractTrailingNonCommaChars(" ") }"`
);
console.log(
'"," =>',
`"${ extractTrailingNonCommaChars(",") }"`
);
console.log(
'"" =>',
`"${ extractTrailingNonCommaChars("") }"`
);
console.log(
'"Street, number 1, Barcelona " =>',
`"${ extractTrailingNonCommaChars("Street, number 1, Barcelona ") }"`
);
console.log(
'", Lloret de, Mar " =>',
`"${ extractTrailingNonCommaChars(", Lloret de, Mar ") }"`
);
.as-console-wrapper { min-height: 100%!important; top: 0; }
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句