正则表达式词边界空间

时间:2016-09-04 19:37:56

标签: javascript regex

我必须用“ögrtmnZZ”替换确切的“çember”字词,即使在另一个字符必须替换它之后也是如此。 (çember,çemberblabla..等等-Okay-)但是如果这个词在另一个词中则不行。(blablaçember,blablaçemberi等等......还没有 - )所以我找到了一个正则表达式而不是\b锚点(单词)因为\b锚点不知道“ç,ü,ş,ö,ğ等等”之后是否有特殊字符,它只知道ASCII代码(我认为)这个正则表达式在开始时起作用,但是它有空间问题,如果我第二次输入“çember”,它就不会放置空间而不能正常工作。我不知道如何修改我的正则表达式。有什么帮助吗?

$(document).ready(function() {

  $("#ta_1").keyup(function(event) {

    text2 = $(this).val();

    text2 = text2.replace(RegExp("(?:^|\\s)çember(?:$|\\s)", "g"), "ögrtmnZZ");
    text2 = text2.replace(RegExp("(?:^|\\s)çember([abcçdefgğhıijklmnoöprqsştuüxwvyzABCÇDEFGĞHIİJKLMNOÖPRQSTUÜXWVYZ])", "g"), "ögrtmnZZ$1");

    $("#ta_2").val(text2);

  });

});
<!DOCTYPE html>
<html lang="tr">
<head>
  <title></title>
  <meta charset="utf-8" />
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>

<textarea id="ta_1" rows="5" cols="28"></textarea>
<textarea id="ta_2" rows="5" cols="28"></textarea>

</body>
</html>

2 个答案:

答案 0 :(得分:1)

我不确定我是否理解了你想要实现的目标,但你可以试试这个:

ac = 'abcçdefgğhıijklmnoöprqsştuüxwvyzABCÇDEFGĞHIİJKLMNOÖPRQSTUÜXWVYZ';
text2 = text2.replace(RegExp("([^"+ac+"]+|\\s|^)çember([^\\s]*)", "g"), "$1ögrtmnZZ$2");

$(document).ready(function() {

  $("#ta_1").keyup(function(event) {

    text2 = $(this).val();

    ac = 'abcçdefgğhıijklmnoöprqsştuüxwvyzABCÇDEFGĞHIİJKLMNOÖPRQSTUÜXWVYZ';
    text2 = text2.replace(RegExp("([^"+ac+"]+|\\s|^)çember([^\\s]*)", "g"), "$1ögrtmnZZ$2");
    $("#ta_2").val(text2);

  });

});
<!DOCTYPE html>
<html lang="tr">
<head>
  <title></title>
  <meta charset="utf-8" />
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>

<textarea id="ta_1" rows="5" cols="28"></textarea>
<textarea id="ta_2" rows="5" cols="28"></textarea>

</body>
</html>

答案 1 :(得分:0)

将非捕获组更改为捕获组,然后在替换字符串$1ögrtmnZZ$2中使用反向引用:

text2.replace(RegExp("(^|\\s)çember([abcçdefgğhıijklmnoöprqsştuüxwvyzABCÇDEFGĞHIİJKLMNOÖPRQSTUÜXWVYZ])", "g"), "$1ögrtmnZZ$2")

&#13;
&#13;
$(document).ready(function() {
  $("#ta_1").keyup(function(event) {
    text2 = $(this).val();
    text2 = text2.replace(RegExp("(^|\\s)çember([abcçdefgğhıijklmnoöprqsştuüxwvyzABCÇDEFGĞHIİJKLMNOÖPRQSTUÜXWVYZ])", "g"), "$1ögrtmnZZ$2")
    $("#ta_2").val(text2);
  });
});
&#13;
<!DOCTYPE html>
<html lang="tr">
<head>
  <title></title>
  <meta charset="utf-8" />
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>

<textarea id="ta_1" rows="5" cols="28"></textarea>
<textarea id="ta_2" rows="5" cols="28"></textarea>

</body>
</html>
&#13;
&#13;
&#13;