正则表达式创建
Regular expression creation
我需要拆分一个字符串,但只能沿着最后一次出现的separator
(可能会出现很多次),我可以这样做(见下文),但我想动态创建它(从用户输入)而不是硬编码。
例如:
var separator= /abc/;
var stringToSplit = 'ONEabc123TWO45THREEabc67FOUR';
var result = stringToSplit.split(/('abc)(?!.*'abc)/);
/*['ONEabc123TWO45THREE', 'abc', '67FOUR']*/
相反,我想这样做:
function make(sep){
...magic happens here...
return superSeparator;
}
var separator = make(/abc/);
var stringToSplit = 'ONEabc123TWO45THREEabc67FOUR';
var result = stringToSplit.split(separator );
/*['ONEabc123TWO45THREE', 'abc', '67FOUR']*/
JSfiddle
这是否可能不将其沿所有分隔符拆分并仅将除最后一个分隔符之外的所有内容与 join() 粘合在一起?
为此使用 RegExp 构造函数
var re = new RegExp(pattern, flags);
所以,例如,
function makeMySeparator(pattern) {
if (pattern instanceof RegExp) // if input is a RegExp already
pattern = pattern.source; // get the string of it's pattern
return new RegExp('(' + pattern + ')(?!.*' + pattern + ')');
}
makeMySeparator('''abc'); // /('abc)(?!.*'abc)/
请记住,如果您正在编写字符串文字,则需要转义反斜杠,否则它们在解释时会消失。
我认为你可以用原生js做到这一点:
function splitOnLastSeparator(separatorToSplit, separator) {
var length = separatorToSplit.length,
index = separatorToSplit.lastIndexOf(separator);
var arr = [];
arr.push(separatorToSplit.substr(0, index));
arr.push(separator);
arr.push(separatorToSplit.substr(index + separator.length, length));
return arr;
}
console.log(splitOnLastSeparator('ONEabc123TWO45THREEabc67FOUR', 'abc'));
相关文章:
- 使用变量中的 gi 标志创建正则表达式
- 从对象键创建正则表达式
- 如何创建正则表达式 查找 JS 文件(或 JSON)中的所有字符串
- 如何从字符串创建正则表达式
- 如何为此格式创建正则表达式B001169875
- 如何创建正则表达式javascript函数来匹配特定的字符串组合
- 如何为 -90 到 -90 字符串接受创建正则表达式
- 如何创建正则表达式检查罗马数字
- 用javascript创建正则表达式
- 如何为这些句子创建正则表达式
- 创建正则表达式数组
- Javascript RegExp:使用变量创建正则表达式
- JavaScript以编程方式创建正则表达式
- 为javascript创建正则表达式
- 在JavaScript中创建正则表达式的问题
- 如何从JS对象的键创建正则表达式
- 如何在javascript中为文件夹名称创建正则表达式
- 如何创建正则表达式以在较大字符串中查找子字符串
- 使用RegExp动态创建正则表达式,并过滤内容
- 从掩码值创建正则表达式模式以验证邮政编码