基于带有参数的正则表达式生成字符串
Generate string based on regex with parameters
我正在用JavaScript编写一个基本的url生成器。我有一个包含regex路由的路由表。目标是根据给定的正则表达式模式和参数生成url。
例如,我有以下模式:
var route = /'/([0-9]{4})'/some-constant-string-here'/([a-z-]+)/i
具有以下参数:
var parameters = [1234, "test-stuff"];
我如何将参数应用于模式以获得此:/1234/some-constant-string-here/test-stuff
附加:我需要/可以命名表达式中的参数吗?
在这种情况下不应该使用regex。最好使用Array.prototype.splice()
自定义parameters
,然后加入数组以检索期望的URL。
var params = [1234, "test-stuff"];
params.splice(1, 0, 'some-constant-string-here');
var url = '/' + params.join('/');
alert(url);
当您谈到命名参数时,您可以通过创建一个函数来实现这一点:
function makUrl(obj) {
return '/'+obj.base+'/some-constant-string-here/'+obj.target;
}
var route = makUrl({base:'1234',target:'test-stuff'});
或者,你想创建一个特定的对象:
var route = function() {
this.Base = '0000';
this.base=function(val) {
if (typeof(val)!='undefined') this.Base=val;
return this.Base;
}
this.Target= undefined;
this.target=function(val) {
if (typeof(val)!='undefined') this.Target=val;
return this.Target;
};
this.url=function() {
if ( (typeof(this.Base)!='undefined') &&
(typeof(this.Target)!='undefined'))
return '/'+this.Base+'/some-constant-string-here/'+this.Target;
};
}
function println(val) { sample.innerHTML+=val+"<br>"; }
var rt01 = new route;
println( rt01.base() );
println( rt01.target() );
println( rt01.url() );
rt01.base(1234);
rt01.target('test-stuff');
println("...");
println( rt01.base() );
println( rt01.target() );
println( rt01.url() );
#sample {font-family:mono;}
<div id="sample"> </div>
我想这个能胜任你的工作。首先验证这两个参数,然后构造url。
var parameters = [1234, "test-stuff"],
text = "some-constant-string-here",
url = "";
/'d{4}/.test(parameters[0]) &&
/[a-z-]+/.test(parameters[1]) &&
(url = "/" + parameters[0] + "/" + text + "/" + parameters[1]);
感谢大家的回答。我在以下的generate
方法中找到了最接近我的问题的解决方案:
https://github.com/gnoesiboe/route-match/blob/master/lib/utility/pathGenerator.js
它使用regexp库的路径从路由中提取regexp:https://github.com/pillarjs/path-to-regexp
- regexp可用于验证路径
generate
方法中的requiredRouteParams
包含从路由建立路径所需的数据
相关文章:
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 从字符串中提取年份的Javascript正则表达式
- Javascript 如何强制 string.replace 不将我的字符串解释为正则表达式
- 如何将正则表达式包含到字符串数组中
- 使用正则表达式匹配长度为六个字符的字母数字字符串
- 使用正则表达式反转字符串中的元音
- 如何分割由JavaScript中使用正则表达式的多个部分组成的字符串
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- 删除两个字符串正则表达式之间的所有内容
- Javascript,字符串正则表达式匹配
- 字符串正则表达式模式.replace(/{0}/, “$0.00”) 不起作用
- Javascript:字符串正则表达式
- 如何在JavaScript中子字符串正则表达式
- 匹配大写或小写字符串正则表达式
- 逗号和空格分隔的数字和连字符分隔的字符串正则表达式
- 解析CGI查询字符串正则表达式
- 分析已知键的字符串正则表达式,但保留分隔符
- 在一组字符串中重新排列一个字符串 - 正则表达式
- 从字符串正则表达式中提取多个值