javascript - JS 正则表达式挑战 : replacing recurring patterns of commas and numbers

标签 javascript regex replace

我正在摆弄一个程序,将日本地址转换为罗马字(拉丁字母),以便在紧急广播系统中为居住在日本城市的外国人使用。

紧急疏散警告会同时发送到区域列表。我希望能够复制/粘贴这个日语区域列表并吐出对应的罗马字母。

日语输入示例: 3条4~12丁目、15~18条12丁目、2、3条5丁目 (此列表分为三个区域,其中条(jo)和丁目(chome)分别表示南北和东西方向的街区号)

这些数字本身就很好,而且我已经编写了代码,将字符“条”和“丁目”替换为相应的罗马字母。我的程序当前输出前两个区域(正确)为“3-jo 4~12-chome”和“15~18-jo 12-chome”

但是,我想替换最后一个区域“2、5条6丁目”(表示 6-chome 的第 2 block 和第 5 block )中的模式,以便输出为“< strong>2&5条六丁目"

表示该模式的正则表达式为\d*、\d*(注意日语格式逗号)

我还在习惯正则表达式 - 如何用“&”替换所有 \d*、\d* 模式中的逗号?请注意,我不能简单地替换所有逗号,因为它们也用于分隔区域。

最佳答案

最简单的方法是隔离像 15、18 这样的序列并替换其中的所有逗号。

text = "3条4~12丁目、15~18条12丁目、2、3条5丁目";
text.
  replace(/(?:\d+、)+\d+/g, function(match) {
    return match.replace(/、/g, "&");
  }).
  replace(/条/g, '-jō ').
  replace(/丁目/g, '-chōme').
  replace(/~/g, '-').
  replace(/、/g, ', ')
// => "3-jō 4-12-chōme, 15-18-jō 12-chōme, 2&3-jō 5-chōme"

(另外......你到底住在哪里,有按基本方向排列好的丁?我住的地方,地址一团糟......:P)

(另外,感谢 sainaen 将我的正则表达式挑剔到完美:) )

关于javascript - JS 正则表达式挑战 : replacing recurring patterns of commas and numbers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30611125/

相关文章:

javascript - 如何在 jquery validate() 上显示警报

php - 这个 preg_replace 有什么作用? (/[\xF0-\xF7].../)

linux - 在 linux 中查找字符串并替换行

javascript - Discord.js v13 选项中的选择 - 斜线命令

javascript - 如何使用JS禁用表行并在MYSQL中插入所选选项?

php - 奇怪的preg_replace行为将字符变成数字

php - mysql 从 json 编码字段中选择指定的 key_name 和 key_value

r - 不在注释行查找和/或替换

python - 正则表达式 : replace comma in string, Python

javascript - promise 无法正常工作的 AngularJS 工厂