我有以下的js代码
var regex = new RegExp('([\'"]?)((?:\\\\\\1|.)+?)\\1(,|$)', 'g'),
key = regex.exec( m ),
val = regex.exec( m );
我想理解它。特别是:
为什么在RegExp的定义中有这么多反斜杠?我可以清楚地看到,\\1是对第一个保存元素的引用。为什么在新的RegExp中使用‘而不是’我们需要使用\\1而不是简单的\1
为什么key和val的两个定义之间有逗号?我可能会猜测,这取决于使用"g"查找的“实例”,但
长话短说,我试图“修复”我的系统,以便我在后端使用与前端相同的正则表达式(出于明显的安全原因,验证两端)。我已经让我的regex服务器端工作得很好,但是把它转到客户机是一件很痛苦的事情。我最快的想法是简单地将其存储在标记的数据属性中,获取它,然后根据它进行验证。
好吧,我,再想一想!JS把我扔进了一个循环,因为显然RegExp对字符串的解释是不同的,这取决于它是如何被拉入的。有没有人能解释一下这里发生了什么,或者我该如何解决这个问题?
HTML
<span data-regex="(^\\d{5}$)|(^\\d{5}-\\d{4}$)"></span>
我试图在下面的允许字符列表中添加反斜杠。必须使用它&传入它,如下面的RegExp字符串所示:
我试过逃避它,但没有结果:
expandedText: function (e) {
var regex = new RegExp("^[\\w., #&/-]+$");
var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (!regex.test(key)) {
event.preventDefault()
我有一个程序(用Clojure编写),它向JS函数中注入一些JS代码,然后通过Nashorn对其进行评估。我无法控制代码传递(它可能包含引号、简单引号.)。
看起来是这样的:
;; Clojure
(eval-str (str "print(evaluateCode(\"" s " \"))"))
// equivalent code in pseudo-js just for those not reading Clojure fluently
evalJS("println(evaluateCode(" + arbitra
我需要编写一个bash脚本,它首先将几个文件组合成一个文件,然后用字符串jQuery替换所有的$符号。我一直做得很好,直到被替换:
#!/usr/bin/env bash
# Run this script in this directory to compile the fixed query widget
# where we'll write the output to
OUT="compliled.js"
# path to dependencies
# combine all the dependencies into a single file in
我正在写一个小的ruby程序,需要从给定的字符串中提取时间和日期……它最终会猜测它是什么类型的约会/会议,并使用它来最好地为用户服务。不幸的是,下面的正则表达式可以在我的高级文本正则表达式搜索中工作,但不能在ruby中工作。
email = "
Med Check
From Google Calendar
This invitation is out of date. This event has been updated.
View updated information on Google Calendar
more details »
Med Check
When
Mon Jan
我已经在JavaScript上搜索了eg。字符串中的一个字母,如果字母不在字符串中,则输出"ok“,如果字母在字符串中,则输出"not ok”:
var term = "term";
var slash = "a";
var search =term.search(slash);
if(search==-1)
"ok";
else
"not ok";
问题是,我也希望使用反斜杠。奇怪的是,在一行中搜索两个反斜杠是有效的,所以"term“输出"ok”和"term\“输出"
我很难弄清楚为什么这段代码不能生成匹配对象。我在Centos操作系统上运行python版本2.6.6。
>>> x = r'\[GOOD\]'
>>> y = r'it made me feel \[GOOD\]'
>>> match = re.search(x, y)
>>> print match
None
我的预期输出将是一个match对象,如下所示:
>>> match = re.search ('hi', 'hilllaos')
&
是偶然发现的,不知道原因是什么。
// Results in "Syntax error in regular Expression".
var re = RegExp('\\');
我知道构造函数需要一个字符串作为参数。反斜杠在字符串中用于转义具有特殊意义的字符。我知道我必须把像\d这样的角色转义到\d。
因此:右反斜杠应该解释为一些正常的字符。
相反,它会引发一个错误。为什么?
有人能给我解释一下吗?
我正在试着找出解决我遇到的问题的方法。如果我执行以下C#代码:
Regex r = new Regex("[\\r\\n]*");
Match m = r.Match("\\r\\n");
如果我检查m.Success的值,我得到的值是true,这是正确的。但是如果我检查m.Length的值,我得到的值是0。如果我检查m.Value,我也会得到一个空值。我的Regex中是不是遗漏了什么?我的印象是,要么m.Success必须为false且m.Length为0,要么m.Success必须为true且m.Length必须大于0。任何帮助清理这一点将不胜感激!
我正在写一个函数,它接受一个预期的文件名,并验证它,以确保文件名中没有系统不允许的字符。这些是不允许的字符:/\|*?“<>
显然,我可以使用string.indexOf()逐个搜索每个特殊字符,但这比仅使用string.search()使用正则表达式查找文件名中的任何字符要长得多。
问题是,这些字符中的大多数都被认为是描述正则表达式的一部分,所以我不确定如何将这些字符包含为regex本身的一部分。例如,Javascript正则表达式中的/字符告诉Javascript它是正则表达式的开始或结束。如何编写一个JS正则表达式,其功能行为如下: filename.search(\ OR