我可以使用正则表达式将一个字符组替换为另一个字符组吗?

问题描述 投票:0回答:1

我想用“a”替换“á”,用“e”替换“é”,等等... 我可以用单个正则表达式来做到这一点吗?

找到:

/[áéíóúý]/

替换:???

也许替换可以包含单独的列表,具体取决于像这样的匹配组?

找到:

/(á)|(é)|(í)|(ó)|(ú)|(ý)/

替换:

/a|e|i|o|u|y/

regex delphi
1个回答
0
投票

如果你用谷歌搜索一下,你会发现很多在线工具可以做到这一点。 例如,这个:https://www.text-utils.com/remove-accents/

使用 JavaScript 的 normalize() 函数

您可以使用 JavaScript 规范化字符串并分隔重音符号 从字母中删除它们,然后使用正则表达式删除它们。 活生生的例子在这里:

document.addEventListener("DOMContentLoaded", () => {
  const inputTextarea = document.getElementById("input");
  const outputTextarea = document.getElementById("output");

  function removeAccents(text) {
    return text.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
  }

  function updateOutput() {
    outputTextarea.value = removeAccents(inputTextarea.value);
  }

  inputTextarea.addEventListener('input', updateOutput);
  
  updateOutput();
});
<form action="#">
  <div class="form-item">
    <label for="input">Type your text with accents here:</label><br>
    <textarea name="input" id="input"
              cols="80" rows="3"
              >éàîÿ or ÔÄ and so on...</textarea>
  <div>

  <div class="form-item">
    <label for="output">Output:</label><br>
    <textarea id="output" name="output"
              cols="80" rows="3"></textarea>
  </div>
</form>

© www.soinside.com 2019 - 2024. All rights reserved.