我需要匹配一个以该字符串可接受长度为前缀的字符串。
例如,{3}abc将匹配,因为该abc部分是3字符长。{3}abcd会因为失败abcd是不 3长的字符。
我会使用^\{(\d+)\}.{\1}$(N在花括号内捕获一个数字,然后是任何字符N时间),但似乎重复构造中的值必须是一个数字(或者至少,它不会接受反向引用)。
例如,在 JavaScript 中这会返回 true:
/^\{(\d+)\}.{3}$/.test("{3}abc")
虽然这返回假:
/^\{(\d+)\}.{\1}$/.test("{3}abc")
这是否可以在单个正则表达式中完成,或者我是否需要将其分为两个阶段,例如:
/^\{(\d+)\}/.test("{3}abc") && RegExp("^\\{" + RegExp.$1 + "\\}.{" + RegExp.$1 + "}$").test("{3}abc")
regex ×1