我正在尝试为此字符串找到JavaScript regexp:![]()
。不过,它需要完全匹配,所以:
`!()[]` // No match
hello!()[] // No match
!()[]hello // No Match
!()[] // Match
!()[] // Match (with a whitespace before and/or after)
我试过这个:\b![]()\b
。它适用于单词,例如\bhello\b
,但不适用于那些字符。
答案 0 :(得分:3)
指定的字符是控制字符,如果要匹配空格,还需要对用户进行转义。请尝试以下
\s?!(?:\[\]\(\)|\(\)\[\])\s?
编辑:添加了一个捕获组,以便在需要时提取![]()
EDIT2:我错过了您想要[]
和()
的独立订单我已将其添加到此小提琴中http://jsfiddle.net/MfFAd/3/
答案 1 :(得分:1)
这符合您的示例:
\s*!\[\]\(\)\s*
虽然匹配还包括!()[]
之前和之后的空格。
我认为\b
在这里不起作用,因为![]()
不是一个词。看看这个quote from MDN:
\ b - 匹配单词边界。单词边界匹配单词字符未被跟随或前面的另一个单词字符的位置。请注意,匹配中不包括匹配的字边界。换句话说,匹配的字边界的长度为零。
答案 2 :(得分:1)
让我们为方便起见创建一个函数:
function find(r, s) {
return (s.match(r) || []).slice(-1);
}
以下正则表达式仅接受搜索到的字符串和空格:
var r = /^\s*(!\[\]\(\))\s*$/;
find(r, '![]() '); // ["![]()"]
find(r, '!()[] '); // []
find(r, 'hello ![]()'); // []
这个搜索由空格或字符串边界包围的子字符串:
var r = /(?:^|\s)(!\[\]\(\))(?:\s|$)/;
find(r, '![]() '); // ["![]()"]
find(r, 'hello ![]()'); // ["![]()"]
find(r, 'hello![]()'); // []
答案 3 :(得分:0)
要匹配除字母和数字之外的所有字符,您可以使用此正则表达式
/[^A-Z0-9]/gi
g - 搜索全局[平均全文,而不仅仅是第一场比赛] 我不敏感的
删除任何其他符号,例如. and ,
/[^A-Z0-9\.\,]/gi
为了匹配完全字符串,您需要将其分组并将其与全局参数
组合/(\!\[\]\(\))/g
所以它会搜索所有比赛