我需要找到第一次出现的给定字符串("名称"),这些字符串不以" @ ["。
开头<div id="editor" style="height: 500px; width: 800px">Type in a word like "will" below and press ctrl+space or alt+space to get "rhyme completion"</div>
<div id="commandline" style="position: absolute; bottom: 10px; height: 20px; width: 800px;"></div>
<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script src="https://rawgithub.com/ajaxorg/ace-builds/master/src/ace.js" type="text/javascript" charset="utf-8"></script>
<script src="https://rawgithub.com/ajaxorg/ace-builds/master/src/ext-language_tools.js" type="text/javascript" charset="utf-8"></script>
我使用了var str="@[name](com.domain.company:66) my name and another name"
返回正确的匹配但在特定字符串之前有空格 我回来了#34;命名&#34; (&#34;我和#34;之后的那个)
我怎样才能获得字符串&#34; name&#34;一开始没有空间?
答案 0 :(得分:0)
根据你的样本输入,“关闭paren第一次出现后name
的第一次出现”:
/(\).*?)name/
您可以在替换中使用$1
来保留字符串name
之前的所有内容。
str.replace(/(\).*?)name/, "$1foo");
// -> "@[name](com.domain.company:66) my foo and another name"
正确识别@[...](...) ...
结构的完整表单如下所示:
/(@\[[^\]]+\]\([^)]+\)(?:(?!@\[)[\s\S])*?)name/
它将以与上面相同的方式使用,但它可以在较长的文本中正确处理多次出现。
答案 1 :(得分:0)
如果不强制使用正则表达式,请尝试使用此方法
var str="@[name](com.domain.company:66) my name and another name";
var result = str.split( /\s/ ).reduce( function(prev,current){
if ( current.indexOf( "name" ) != -1 && current.indexOf( "@[" ) != 0 )
{
return current;
}
return prev;
} );
alert(result);
答案 2 :(得分:0)
您可以使用正则表达式组,例如:
yourString.match(/[^@\[](name)/)[1];
[1]
表示获取第一组内的字符串((
和)
内)
答案 3 :(得分:0)
如果@之后的名字总是在[]内,你可以使用:
var str="@[name](com.domain.company:66) my name and another name";
var reg = /[^@\[][^\]]+/;
console.log(str.match(reg)[0]); //prints name