Javascript 替换正斜杠第一次和第二次出现之间的字符串
我不太熟悉正则表达式,我需要帮助替换其中第一个和第二个正斜杠之间的字符串值 示例Javascript 替换正斜杠第一次和第二次出现之间的字符串,javascript,regex,Javascript,Regex,我不太熟悉正则表达式,我需要帮助替换其中第一个和第二个正斜杠之间的字符串值 示例 const str = '/questions/ask/1' const strReplace = str.replace(/\[.*?\]\s?/g, 'example') 输出: /questions/ask/1至/example/ask/1 /questions math/ask/1至/example/ask/1 我似乎找不到正确的正则表达式。 谢谢你的帮助。我知道有很多类似的问题,但我就是找不到解决方案
const str = '/questions/ask/1'
const strReplace = str.replace(/\[.*?\]\s?/g, 'example')
输出:
/questions/ask/1
至/example/ask/1
/questions math/ask/1
至/example/ask/1
谢谢你的帮助。我知道有很多类似的问题,但我就是找不到解决方案。使用这样的简单JS可能更好:
var str='/questions/ask/1';
var res=str.split(“/”);
res[1]=“示例”;
res=res.join(“/”);
var s='/questions/ask/1';
var s2='/questions-math/ask/1';
var r=s.replace(/[^\/][-a-zA-Z]*/,“示例”);
变量r2=s2。替换(/[^\/][-a-zA-Z]*/,“示例”);
控制台日志(r);
控制台日志(r2)代码>您可以使用以下正则表达式:
^(\/)(?:[-\w!#$]+)(.*?)$
正则表达式的解释:
^
-表示给定字符串的开头
(\/)
-表示第一个捕获组。此组在替换中用作$1
(?:[-\w!#$]+)
-表示非捕获组,因为您需要替换它,其中包含单词字符和所有需要替换的特殊符号一次或多次您可以在此处添加需要排除的其他特殊符号。
(.*)
-表示第二个捕获组,捕获除替换后的新行字符以外的所有内容。此组在替换中用作$2
$
-表示给定测试字符串的结尾
您可以在中找到上述正则表达式的演示
在JAVASCRIPT中的实现:
const regex=/^(\/)(?:[-\w!#$]+)(.*?)$/gm;
const str=`/questions math/ask/1
/问题/提问/1`;
常量subst=`$1示例$2`;
//被替换的值将包含在结果变量中
const result=str.replace(regex,subst);
控制台日志(结果)代码>如果字符串中必须存在第二个正斜杠:
^\/[^\/\r\n]+(?=\/)
解释
^
字符串的开头
\/
匹配第一个/
[^\/\r\n]+
匹配除/
或换行符以外的任何字符的1+倍
(?=\/)
正向前瞻,断言右边的是第二个/
在替换中,使用第一个/
,然后是示例
[
“/问题/提问/1”,
“/问题/”,
“/问题”
].forEach(s=>
console.log(s+“-->”+s.replace(/^\/[^\/\r\n]+(?=\/)/,“/示例”))
)
这很有效!有没有一种方法可以排除特殊字符,例如如果字符串有-
示例:/questions math/ask/1
**到**/Example/ask/1
只需将这些字符添加到介于[]之间的字符范围中,在这种情况下[-a-zA-Z]@Mandy8055“更有效”,这种“优化”的目的是什么?在我10年的笔记本电脑上,271毫秒内发生了100万次替换。根据我的说法,这个正则表达式是这里最有效和推荐的一个。