You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何用split仅按首尾出现的/分割正则值字符串

正则字符串分割解决方案

方法1:正则匹配提取(推荐)

利用正则的贪婪匹配特性自动定位首尾斜杠,可完整获取中间所有内容(包含内部斜杠):

const regexValue = '/^([0-9]{3}\.?[0-9]{3}\.?[0-9]{3}\-?[0-9]{2}|[0-9]{2}\.?[0-9]{3}\.?[0-9]{3}\/?[0-9]{4}\-?[0-9]{2})$/ig';
// 匹配规则:匹配开头斜杠 + 中间所有内容 + 结尾斜杠 + 修饰符
const res = regexValue.match(/^\/(.*)\/([a-z]*)$/);
if (res) {
  // 正则主体内容,内部的/也不会被截断
  const pattern = res[1];
  // 正则修饰符
  const flags = res[2];
}

其中.*是贪婪匹配,会尽可能多匹配字符,直到遇到最后一个/才停止,所以中间所有内部的/都会被完整保留在分组内。

方法2:索引切片(兼容性更好)

手动定位第一个和最后一个/的位置,直接切片取值,逻辑更直观:

const regexValue = '/^([0-9]{3}\.?[0-9]{3}\.?[0-9]{3}\-?[0-9]{2}|[0-9]{2}\.?[0-9]{3}\.?[0-9]{3}\/?[0-9]{4}\-?[0-9]{2})$/ig';
// 找第一个/的位置
const first = regexValue.indexOf('/');
// 找最后一个/的位置
const last = regexValue.lastIndexOf('/');

const pattern = regexValue.slice(first + 1, last);
const flags = regexValue.slice(last + 1);

两种方案都能完美解决内部包含/的正则字符串拆分问题,不会出现split拆分过多的情况。

内容的提问来源于stack exchange,提问作者Júlio Cesar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:54:07