0

我正在使用正则表达式来匹配模板文件中的链接对象。基本上,一个链接被识别,并且根据用户是否启用了 JS 将其转换为 javascript 或 HTML。

以下是示例链接的样子:

<div id="someDiv">{_LINK_9_link text here_noclass_noid_}</div>

这是我用来在代码中查找这些对象的正则表达式:

$linkExp = '/\{_LINK_([0-9]+)_([a-z0-9 ]+)_([a-z0-9]+)_([a-z0-9]+)_\}/i';

就目前而言,此代码可以很好地执行上述示例,其中链接文本可以包含字母、数字或空格。但是,当我尝试将/或添加-到链接文本时,我无法让正则表达式继续工作。

这是我尝试过的:

<!-- html link code -->
<div id="someDiv">{_LINK_9_tips/suggestions_noclass_noid_}</div>
// php link expression
$linkExp = '/\{_LINK_([0-9]+)_([a-z0-9 \/\-]+)_([a-z0-9]+)_([a-z0-9]+)_\}/i';

但由于/. 如果我去掉斜线,它工作正常。关于如何匹配文字/-正则表达式的任何想法?允许比字母、数字、空格、连字符或斜杠更多的字符会很好,但我是正则表达式的新手,所以我真的不知道我在做什么。如果有人可以帮助我修复它,以便它匹配链接文本的任何内容(甚至是符号,例如 &、%、$ 等),那也将非常感激。

提前致谢。

4

1 回答 1

1

你几乎是对的,使用

$linkExp = '/\{_LINK_([0-9]+)_([a-z0-9 \/-]+)_([a-z0-9]+)_([a-z0-9]+)_\}/i';
  1. '-' 用于 [ ] 内的范围,例如 [az],但如果放在末尾,则视为多一个字符,例如 [az-] 将匹配字母 + '-'
于 2013-02-23T19:54:13.937 回答