【发布时间】:2018-07-12 16:29:13
【问题描述】:
要求是查找搜索字符串是否存在于具有以下条件的给定字符串中。
条件一 搜索字符串应该在单词的开头,即前面没有特殊字符。
abc 应匹配以
abc开头的字符串,例如abcdef句子中的任何位置。abc 不应匹配
xabcdef不应匹配,因为它不是以 'abc' 开头的
条件2如果字符串前面有一些特殊字符,那么它也应该在特殊字符之前有一些文本。
abc 应该匹配
test_abcdef- 因为 'abc' 前面有 'test_'abc 不应匹配
_abcdef- 因为它以 '_' 开头,而 _ 之前没有任何文本
如果字符串在字符串test@_abcdef 或test__abcdef 中有多个 特殊字符ex,则下面的正则表达式找不到abc。
在正则表达式中不确定如何在 '(?' 中添加量词 where [^A-Za-z0-9] 正在检查单个非字母数字字符。
在reqex (?<=... )中添加0个或多个特殊字符的语法是什么
正则表达式尝试在Online Regex Tester
/^(?<![^A-Za-z0-9])abc|(?<=[A-Za-z0-9][^A-Za-z0-9])abc|(?<=\ )abc/g
示例文本:
abcdef abcdef _abcdef xabcdef test_abcdef test__abcdef abc
【问题讨论】:
-
就像其他任何地方一样:
(?<=(whateverHere)*)*是 0 或更多。 -
@zenoo
(?<=([A-Za-z0-9][^A-Za-z0-9])*)abc或(?<=[A-Za-z0-9]([^A-Za-z0-9])*)abc抛出消息:** * 后视中的量词使其宽度不固定**,但与模式不匹配 -
您需要捕捉还是仅仅匹配?
-
@anubhava,是的,这两种情况都需要匹配。
-
@julio,它应该匹配并将使用 exec 和 index 找到突出匹配的位置。
标签: javascript regex