[英]Find the first string that not start with special character(“@[”)
我需要找到不是以“ @ [”开头的给定字符串(“名称”)的首次出现。
var str="@[name](com.domain.company:66) my name and another name"
我使用了pattern=/[^@\\[]name/
这将返回正确的匹配,但在特定字符串之前空格,即返回“名称”(“ my”之后的一个)
我如何只获得字符串“ name”而开头没有空格?
根据您的样本输入,如何“在第一个封闭括号第一次出现之后第一次出现name
”:
/(\).*?)name/
您可以在替换中使用$1
保留导致字符串name
所有开头。
str.replace(/(\).*?)name/, "$1foo");
// -> "@[name](com.domain.company:66) my foo and another name"
正确识别@[...](...) ...
构造的完整格式如下所示:
/(@\[[^\]]+\]\([^)]+\)(?:(?!@\[)[\s\S])*?)name/
它的使用方式与上述相同,但是可以正确处理较长文本中的多次出现。
如果不是必须使用正则表达式,请尝试此方法
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);
您可以使用正则表达式组,例如:
yourString.match(/[^@\[](name)/)[1];
[1]
表示得到第一组内的字符串(内部(
和)
)
如果@之后的名称始终位于[]之内,则可以使用以下命令:
var str="@[name](com.domain.company:66) my name and another name";
var reg = /[^@\[][^\]]+/;
console.log(str.match(reg)[0]); //prints name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.