首页/网络/BGP 与广域网速查/AS_PATH 正则符号速查
路由过滤与重分发66 条

AS_PATH 正则符号速查

正则符号含义:^ 路径开头、$ 路径结尾、_ 边界(AS 号间与两端)、. 任意单字符、* 重复 0 次以上、+ 重复 1 次以上、? 0 或 1 次;[] 表示字符集。

BGP 与广域网速查网络更新于 2026-10-13

符号速查

AS_PATH 正则与普通字符串处理的差别在于边界:AS 号之间以及路径两端都存在隐式分隔符,用下划线表示。掌握 ^、$、_ 与重复符号的含义,才能把「起源是某 AS」和「经过某 AS」这两类判断写准确,这也是路径过滤写错的主要原因。

基本信息

匹配对象AS_PATH 字符串,AS 号之间由分隔符连接
边界符_ 匹配 AS 号边界(空格、逗号、括号与首尾)
锚点^ 路径开头,$ 路径结尾
重复* 零次以上、+ 一次以上、? 零或一次
字符集[] 表示可选字符范围,如 [1-9]
应用ip as-path access-list 定义后由 filter-list 挂到邻居

符号与示例

符号含义示例
^路径开头^65002 以 65002 开头
$路径结尾65002$ 起源 AS 为 65002
_AS 号边界(空格/逗号/括号等)_65002_ 路径任意位置出现 65002
.任意单字符6500. 匹配 65000-65009
* + ?0 次以上 / 1 次以上 / 0 或 1 次64+ 连续多个 64
[]字符集^6500[1-9] 覆盖 65001-65009
|或(65002|65003)$ 两个起源之一
^$空路径本 AS 自己起源的路由

组合示例

组合示例
ip as-path access-list 1 permit ^65002$        # 起源正是 65002
ip as-path access-list 1 permit ^65002_       # 从 65002 直接传来
ip as-path access-list 1 permit _65002_       # 路径中任意位置经过 65002
ip as-path access-list 1 permit ^6500[1-9]_   # 起源在 65001-65009 区间
ip as-path access-list 1 deny .*              # 兜底拒绝
!
show ip bgp regexp _65002_                    # 直接按正则筛选 BGP 表验证
写复杂正则前先用 show ip bgp regexp <正则> 在不改配置的情况下验证命中的路由集合,比改完再看影响面安全得多。
不同实现的语法细节略有差别:大括号与问号的转义方式在部分平台上要求额外处理,跨厂商迁移策略时逐条验证。

先验证再上线

先验证再上线
show ip bgp regexp ^65002$          # 不改变配置,直接筛选命中的路由
show ip bgp regexp _65002_          # 核对经过该 AS 的路由集合
show ip bgp filter-list 10          # 查看已挂载列表的命中结果
# 确认集合符合预期后,再把正则应到 filter-list 上

易混淆的写法对照

写法匹配含义注意点
^65002$起源 AS 恰好为 65002只匹配本 AS 起源且无中转的路由
^65002_路径以 65002 开头对端直连发来的路由
_65002路径以 65002 结尾起源为 65002,但可能经过其他 AS 传递
65002任意位置出现该数字串会命中 650020 这类更长编号
^$空路径本机起源的路由
核对命中集合时建议同时用 show ip bgp regexp 与 show ip bgp filter-list 两条命令:前者看正则本身的语义,后者看它挂到邻居后的实际效果。

易错点

  • 把 _ 当字面字符:它是边界元字符,会匹配多种分隔符
  • 漏掉 $ 锚点:65002 会匹配所有以 65002 开头的路径
  • 把 ^65002 当成「只从该 AS 接收」:它只约束路径开头,来源为直接对端时需结合设计判断
  • 未在本机用正则命令验证:直接套用到 filter-list 后影响面不可控

数据来源与参考

  • Cisco: AS_PATH 正则表达式说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌