繁体   English   中英

正则表达式词边界空间

[英]regex word boundary space

我必须用“ ögrtmnZZ ”替换确切的“ çember ”一词,即使在另一个字符必须替换它之后也是如此。 (çember,çemberblabla..等-Okay-)但如果字是另一个字。(blablaçember,blablaçemberi等等-不是Okay-),所以我发现了一个正则表达式,而不是\\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> 

我不确定我是否了解您要实现的目标,但是您可以尝试以下方法:

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ögrtmnZZ$2使用反向引用:

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

 $(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); }); }); 
 <!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> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM