使用Javascript提取简单字符串的一部分
假设我有这些字符串,每一行都是一个单独的字符串:使用Javascript提取简单字符串的一部分,javascript,regex,string,Javascript,Regex,String,假设我有这些字符串,每一行都是一个单独的字符串: EducationLink BioLink InterestsLink 我想用Javascript提取非链接的部分。我该怎么做?预期结果如下: Education Bio Interests 我试过正则表达式,但我对它们不是很有经验,结果失败了: /^ (^Link) $/ 使用诸如slice和substr之类的字符串函数,我只获得所选文本右侧的值,而不是所需的左侧的值 谢谢你的帮助 您可以使用。替换 text = input.replac
EducationLink
BioLink
InterestsLink
我想用Javascript提取非链接的部分。我该怎么做?预期结果如下:
Education
Bio
Interests
我试过正则表达式,但我对它们不是很有经验,结果失败了:
/^ (^Link) $/
使用诸如slice和substr之类的字符串函数,我只获得所选文本右侧的值,而不是所需的左侧的值
谢谢你的帮助 您可以使用。替换
text = input.replace(/Link(\n|$)/g,"\n");
问题是,您可以使用regex来进行替换,但是如果没有更多的替换,那么这是一个如此简单的场景,为什么您会使事情过于复杂?您可以使用.replace
问题是,您可以使用正则表达式来进行替换,但如果没有更多的替换,那么这是一个如此简单的场景,为什么您会使事情过于复杂?您需要将链接放在正则表达式的末尾,例如:
^([A-Z]+)Link$
这符合:
A和Z之间的一个或多个字符
然后是Link这个词
然后是字符串的结尾
括号中的部分将作为一个组返回
此外,如果只需删除后缀链接,则可以在Javascript中使用replace方法:
var x = myStr.replace('Link', '');
您需要将链接放在正则表达式的末尾,例如:
^([A-Z]+)Link$
这符合:
A和Z之间的一个或多个字符
然后是Link这个词
然后是字符串的结尾
括号中的部分将作为一个组返回
此外,如果只需删除后缀链接,则可以在Javascript中使用replace方法:
var x = myStr.replace('Link', '');
一种方法是使用
一种方法是使用
试试这个:
试试这个:
正如其他人所指出的,如果所有字符串都以“Link”结尾,只需使用replace。否则,以下任何方法都可以正常工作:
var i = 0;
var strings = [
'EducationLink',
'BioLink',
'InterestsLink'
];
var s = '';
var r = /^(.+)Link$/
for (i = 0; i < strings.length; i += 1) {
s = strings[i];
//s = s.substring(0, s.indexOf('Link')); //Uncomment for substring
//s = s.match(r)[1]; //Uncomment for regex
s = s.replace('Link', '');
strings[i] = s;
}
console.log(strings);
虽然一个正则表达式中可以有两个字符串起始标识符,但只有一个字符串起始标识符。^字符仅是包含在方括号中的字符类中的一个否定字符,而不是曲线字符。如果要捕获文字插入符号^,请在其前面加一个反斜杠\^。正如其他人所指出的,如果所有字符串都以“Link”结尾,只需使用替换。否则,以下任何方法都可以正常工作:
var i = 0;
var strings = [
'EducationLink',
'BioLink',
'InterestsLink'
];
var s = '';
var r = /^(.+)Link$/
for (i = 0; i < strings.length; i += 1) {
s = strings[i];
//s = s.substring(0, s.indexOf('Link')); //Uncomment for substring
//s = s.match(r)[1]; //Uncomment for regex
s = s.replace('Link', '');
strings[i] = s;
}
console.log(strings);
虽然一个正则表达式中可以有两个字符串起始标识符,但只有一个字符串起始标识符。^字符仅是包含在方括号中的字符类中的一个否定字符,而不是曲线字符。如果要捕获文字插入符号^,请在其前面加一个反斜杠\^。如果假设每一行都是单独的字符串,则应改为:text=input.replace/Link$/;。不过,我不确定OP的意思是什么。每一行都是一个单独的字符串,对此我很抱歉。更新的正则表达式仍然可以工作,但如果需要,可以将其简化为/Link$/g。如果假设每一行都是一个单独的字符串,那么它应该是这样的:text=input.replace/Link$/;。不过,我不确定OP的意思是什么。每一行都是一个单独的字符串,很抱歉。更新的正则表达式仍然可以工作,但是如果您愿意,您可以将其简化为/Link$/g。哦,这很明显。然而,为什么我的正则表达式不起作用?你的正则表达式没有多大意义。^字符用于匹配字符串的开头,或对括号组中的字符求反。例如[^Link]将表示任何既不是L、也不是i、也不是n或k的字符。好的,但我使用了普通括号,而不是方括号[]。我想不出任何与您的表达式匹配的字符。哦,这很明显。然而,为什么我的正则表达式不起作用?你的正则表达式没有多大意义。^字符用于匹配字符串的开头,或对括号组中的字符求反。例如[^Link]将表示既不是L,也不是i,也不是n,也不是k的任何字符。好的,但我使用的是普通括号,而不是方括号[]。我想不出任何与您的表达式匹配的字符。因为如果有多行需要处理。因为在某处的绳子中间可能有链接。因为普通字符串替换可能会出现很多问题。除此之外,没有理由。这两种情况都不是真的,所以这似乎是最好的答案。@Kolink没有必要让你的内裤陷入困境。询问者明确地说他有几个字符串,然后列出它们。因为如果有多行需要处理。因为在某处的绳子中间可能有链接。因为普通字符串替换可能会出现很多问题。除此之外,没有理由。这两种情况都不是真的,所以这似乎是最好的答案。@Kolink没有必要让你的内裤陷入困境。询问者明确地说他有几个字符串,并继续列出它们。
/^ (^Link) $/
//Each regex term on own line, commented below
^ //start of string
//Literal space
(^Link) //Capturing group, string starting with 'Link'.
//Literal space
$ //end of string