Javascript 查找不以特殊字符(“@[”开头)开头的第一个字符串
我需要找到第一个不以“@[”开头的给定字符串(“名称”) 我使用了Javascript 查找不以特殊字符(“@[”开头)开头的第一个字符串,javascript,regex,Javascript,Regex,我需要找到第一个不以“@[”开头的给定字符串(“名称”) 我使用了模式=/[^@\[]名称/ 这将返回正确的匹配项,但在特定字符串之前有空格 即返回“name”(在“my”之后的一个) 如何仅获取开头没有空格的字符串“name”?根据您的示例输入,“在第一次出现结束参数后第一次出现name”: 您可以在替换中使用$1,以保留导致字符串名称的任何内容 str.replace(/(\).*?)name/, "$1foo"); // -> "@[name](com.domain.company
模式=/[^@\[]名称/
这将返回正确的匹配项,但在特定字符串之前有空格
即返回“name”(在“my”之后的一个)
如何仅获取开头没有空格的字符串“name”?根据您的示例输入,“在第一次出现结束参数后第一次出现
name
”:
您可以在替换中使用$1
,以保留导致字符串名称的任何内容
str.replace(/(\).*?)name/, "$1foo");
// -> "@[name](com.domain.company:66) my foo and another name"
正确识别@[…](…)…
构造的完整表单如下所示:
/(@\[[^\]]+\]\([^)]+\)(?:(?!@\[)[\s\S])*?)name/
它的使用方法与上述相同,但它可以正确处理较长文本中的多次出现。如果不强制使用regex,请尝试此方法
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
为什么不修剪一下你得到的东西,比如“sad”.trim()
你想在这个字符串中找到一个包含特定文本的单词,例如,名称
,它不是以@
开头的,对吗?那么你想用它做什么,用另一个字符串替换它就可以了,但是当名称以新行开头时,模式不匹配。var str=“@[name](com.domain.company:66)我的名字和另一个名字“我试过这个但没用,/()*?\n?)名字/使用[\s\s]
而不是
-或者直接使用第二种模式。
yourString.match(/[^@\[](name)/)[1];
var str="@[name](com.domain.company:66) my name and another name";
var reg = /[^@\[][^\]]+/;
console.log(str.match(reg)[0]); //prints name