前面有两个或多个特殊字符的正则表达式
regex precceded by two or more special character
我坚持创建regex,这样,如果单词以特殊字符开头或结尾,那么每一边都有多个regex, regex 'exec'方法应该抛出null。只有当单词在每一边都有一个括号时,'exec'方法应该给出结果。
如果字符串类似"(test)",则只有regex。Exec应该有其他组合的值,比如"((test))"或"((测试)或者"(test))",它应该是空的。下面的代码没有抛出空,它应该。请建议。
var w1 = "'(test')";
alert(new RegExp('(^|[' + ''(')' + '])(' + w1 + ')(?=[' + ''(')' + ']|$)', 'g').exec("this is ((test))"))
如果您有一个单词列表并想要过滤它们,您可以执行以下操作:
string.split(' ').filter(function(word) {
return !(/^[!@#$%^&*()]{2,}.+/).test(word) || !(/[!@#$%^&*()]{2,}$).test(word)
});
split()
函数在一个空格字符处分割字符串并返回一个单词数组,然后我们可以filter
。
为了保留有效的单词,我们将测试两个正则表达式,看看单词是否分别以两个或两个以上的特殊字符开始或结束。
正则表达式分解
^
-表达式以以下
[]
-块中的单个字符
!@#$%^&*()
-这些是我使用的特殊字符。用你想要的替换它们
{2,}
-匹配前面两个或多个字符
.+
-匹配1个或多个字符
$
-表达式以以下
要这样使用exec
函数,请执行以下操作
!(/^[!@#$%^&*()]{2,}.+/).exec(string) || !(/[!@#$%^&*()]{2,}$).exec(string)
如果我理解正确,你正在寻找包含(test)
的任何字符串,在它的任何地方,正是这样,对吗?
在这种情况下,您可能需要以下内容:
var regExp = /.*[^)]'(test')[^)].*/;
alert(regExp.exec("this is ((test))")); // → null
alert(regExp.exec("this is (test))" )); // → null
alert(regExp.exec("this is ((test)" )); // → null
alert(regExp.exec("this is (test) ...")); // → ["this is (test) ..."]
解释:
.* matches any character (except newline) between zero and unlimited times, as many times as possible.
[^)] match a single character but not the literal character )
这确保在给定的字符串中有你的测试字符串,但它只在每一边用一个大括号包装!
您可以使用以下正则表达式:
(^|[^(])('(test'))(?!'))
参见此处的regex演示,替换为$1<span style="new">$2</span>
。
regex具有一个替换组(^|[^(])
,它匹配字符串^
的开头或(
以外的任何字符。这是一种变通,因为JS正则表达式引擎不支持向后看。
然后,('(test'))
匹配并捕获(test)
。注意,圆括号是转义的。如果它们不是,它们将被视为捕获组分隔符。
(?!'))
是一个提前查找,确保在test)
之后没有字面量的)
。JS regex引擎完全支持提前查找。
var re = /(^|[^(])('(test'))(?!'))/gi;
var str = 'this is (test)'nthis is ((test))'nthis is ((test)'nthis is (test))'nthis is ((test'nthis is test))';
var subst = '$1<span style="new">$2</span>';
var result = str.replace(re, subst);
alert(result);
- 不同浏览器中的空白字符正则表达式行为
- javascript正则表达式来识别所有特殊字符
- 正则表达式,用于除所有空格和一个特殊字符之外的所有内容
- 正则表达式:密码必须至少包含一个特殊字符
- Javascript中的正则表达式问题转义特殊字符
- 向正则表达式添加特殊字符
- javascript正则表达式匹配字符串包含阿拉伯特殊字符符号'œ;u0640
- 正则表达式密码允许特殊字符 JavaScript
- 用于匹配精确单词的正则表达式会影响特殊字符匹配
- 正则表达式不允许所有特殊字符,但允许其他语言,如希伯来语 JavaScript
- 具有少量特殊字符的字符串的有效正则表达式
- 使用正则表达式捕获 2 个特殊字符之间的文本
- 正则表达式不允许特殊字符(Javascript)
- 正则表达式与特殊字符前缀匹配日期
- 如何正则表达式与特殊字符 / 匹配
- 密码正则表达式:“至少 1 个字母、1 个数字、1 个特殊字符,并且不应以特殊字符开头”
- 密码的正则表达式必须包含至少八个字符,至少一个数字以及小写和大写字母以及特殊字符
- 正则表达式不允许连续使用多个特殊字符
- 排除组中的字符(正则表达式)
- Javascript替换:不要在连字符(正则表达式)上拆分单词