Regex 字符串中的正则表达式掩码字符

Regex 字符串中的正则表达式掩码字符,regex,string,replace,str-replace,Regex,String,Replace,Str Replace,可能已经有人问过了,但我需要正则表达式模式来替换下面的掩码(结尾前n个字符,长度为m) 类似的内容将让您开始: .{4}(?=.{3}$) .{2}(?=.{6}$) 这与后跟最后3(6)个字符的任何4(2)个字符相匹配。根据语言的不同,可以根据动态长度进行替换。在PHP中: $n = 3; $m = 4; $string = 'ABCDEFG12345678'; echo preg_replace('/.{' . $m . '}(?=.{' . $n . '}$)/', str_repea

可能已经有人问过了,但我需要正则表达式模式来替换下面的掩码(结尾前n个字符,长度为m)

类似的内容将让您开始:

.{4}(?=.{3}$)
.{2}(?=.{6}$)
这与后跟最后3(6)个字符的任何4(2)个字符相匹配。根据语言的不同,可以根据动态长度进行替换。在PHP中:

$n = 3;
$m = 4;

$string = 'ABCDEFG12345678';
echo preg_replace('/.{' . $m . '}(?=.{' . $n . '}$)/', str_repeat('*', $m), $string);
// ABCDEFG1****678
更深入的RegExp解释:

.{4}         # matches any 4 characters
(?=          # start a "lookahead"
  .{3}       # matches any 3 characters
  $          # matches the end of the string
)            # end the "lookahead"

这意味着您将找到任何4个字符后跟3个字符和字符串结尾的内容。Lookaheads不会作为匹配返回,因此您仍将替换匹配的4个字符。

什么语言?这对于给出一个完整的答案至关重要。看我的答案,在用JS写了一些东西之后,刚刚看到了你的C#偏好。如果您真的需要一个C#/JS示例,请告诉我,但您真正需要做的就是基于
n
m
使我的正则表达式动态。
.{4}         # matches any 4 characters
(?=          # start a "lookahead"
  .{3}       # matches any 3 characters
  $          # matches the end of the string
)            # end the "lookahead"