将字符串化的regexp映射到regexp
Map stringified regexp to RegExp
我想做以下事情:
var regex = /^'/(.*)'/?$/i;
// "/^'/(.*)'/?$/i"
var stringifiedRegex = regex.string();
// //^'/(.*)'/?$/i/
var newRegex = new RegExp(stringifiedRegex);
正如您所看到的,当将字符串化的正则表达式转换回真正的RegExp时,正则表达式会被修改,不再与原始正则表达式匹配。
知道怎么解决这个问题吗?
Bodo
如果让将正则表达式存储为单个字符串(包括所有标志),则可以使用正则表达式将正则表达式拆分为需要传递给new RegExp
的部分(好吧,那是一句话…):
> regex = /^'/(.*)'/?$/i;
/^'/(.*)'/?$/i
> str = regex.toString()
"/^'/(.*)'/?$/i"
> m = str.match(/^[/](.*)[/]([^/]*)$/)
["/^'/(.*)'/?$/i", "^'/(.*)'/?$", "i"]
> newRegex = new RegExp(m[1], m[2])
/^'/(.*)'/?$/i
正则表达式匹配/
,然后捕获尽可能多的内容,然后匹配关闭的/
并捕获可能的标志。
或者,如果您可以将其存储在数据库中的多个字段中,请分别存储源字符串和三个标志的布尔值:
> regex = /^'/(.*)'/?$/i;
/^'/(.*)'/?$/i
> regex.source
"^'/(.*)'/?$"
> regex.global
false
> regex.ignoreCase
true
> regex.multiline
false
相关文章:
- 如何在映射数组中添加换行符
- ng映射方向备选方案
- 无法通过数组映射绑定
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- RegExp:匹配Javascript中除regex值之外的所有内容
- JavaScript正则表达式文本与RegExp对象
- 使用Scala Play Framework视图中的键检索映射值
- 使用RegExp查找url中的字符
- 淘汰映射;不起作用
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- 全局标志仅与第一个匹配项匹配的Regexp
- 映射数组ES6时考虑空值
- Lodash映射并返回唯一
- 如何对映射插件创建的敲除对象进行深度复制
- javascript RegExp的奇怪行为:相同的正则表达式会产生不同的结果
- 替换为javascript中的regExp
- Javascript Regexp-不接受空格,但应该接受
- 在javascript中按映射中的值排序
- javascript中换行的regexp
- 将字符串化的regexp映射到regexp