javascript 如何匹配整个单词但在一定长度限制内
javascript how match whole words but in certain length limit
例如我有这两个字符串:
字符串 1:
"hi sir may name is Jone"
字符串2
"hi may name is Jone"
我有这个正则表达式:
var regex = XRegExp('hi(?:(?!hi|Jone).)*?Jone', 'gs');
将匹配它们,但我想修改正则表达式以仅匹配整个字符串的有限长度
我想匹配字符串两个 "hi may name is Jone" 因为字数较少怎么办..
如果你只想使用正则表达式匹配整个字符串的有限长度,我想你可以这样做:
var index = 15;
var testString1 = "hi may name is Jone";
var testString2 = "hi sir may name is Jone";
testString1.match("^.{1," + index + "}Jone"); // This will match
testString2.match("^.{1," + index + "}Jone"); // This string is longer and will not match
正则表达式的解释 ^.{1, n}Jone
。
^
:应该匹配字符串的开头。
.{1, n}Jone
:匹配 1 到 n
之间的所有内容,直到模式完全匹配。
在这种情况下,我们将 n
定义为 index
,因此此 "limit" 可以是动态的。
希望对您有所帮助!
如果你想得到包含最少数量的同时也匹配你的正则表达式的字符串,你可以split并使用空格作为分隔符并检查返回数组的长度。
以字符串数组为例,您可以创建 var longestString = "";
,它将在循环结束时包含最短的匹配字符串。
在循环中,首先检查是否有match,longestString
是否为空串。如果是这种情况,则设置变量,以便您有一个匹配项来与未来可能的匹配项进行比较。
var strings = [
"test",
"hi sir may name is Jone",
"hi may name is Jone",
"hi Jone",
"hi may name is Jone test",
"hi i am Jone",
"may name is Jone test",
"hi may name is Jane test test 2"
];
var regex = /hi(?:(?!hi|Jone).)*?Jone/;
var longestString = "";
strings.forEach((str) => {
var match = XRegExp.match(str, regex);
if (match && longestString === "") {
longestString = str;
return;
}
if (match && str.split(" ").length < longestString.split(" ").length) {
longestString = str;
}
});
console.log(longestString);
<script src="https://unpkg.com/xregexp/xregexp-all.js"></script>
例如我有这两个字符串:
字符串 1:
"hi sir may name is Jone"
字符串2
"hi may name is Jone"
我有这个正则表达式:
var regex = XRegExp('hi(?:(?!hi|Jone).)*?Jone', 'gs');
将匹配它们,但我想修改正则表达式以仅匹配整个字符串的有限长度
我想匹配字符串两个 "hi may name is Jone" 因为字数较少怎么办..
如果你只想使用正则表达式匹配整个字符串的有限长度,我想你可以这样做:
var index = 15;
var testString1 = "hi may name is Jone";
var testString2 = "hi sir may name is Jone";
testString1.match("^.{1," + index + "}Jone"); // This will match
testString2.match("^.{1," + index + "}Jone"); // This string is longer and will not match
正则表达式的解释 ^.{1, n}Jone
。
^
:应该匹配字符串的开头。
.{1, n}Jone
:匹配 1 到 n
之间的所有内容,直到模式完全匹配。
在这种情况下,我们将 n
定义为 index
,因此此 "limit" 可以是动态的。
希望对您有所帮助!
如果你想得到包含最少数量的同时也匹配你的正则表达式的字符串,你可以split并使用空格作为分隔符并检查返回数组的长度。
以字符串数组为例,您可以创建 var longestString = "";
,它将在循环结束时包含最短的匹配字符串。
在循环中,首先检查是否有match,longestString
是否为空串。如果是这种情况,则设置变量,以便您有一个匹配项来与未来可能的匹配项进行比较。
var strings = [
"test",
"hi sir may name is Jone",
"hi may name is Jone",
"hi Jone",
"hi may name is Jone test",
"hi i am Jone",
"may name is Jone test",
"hi may name is Jane test test 2"
];
var regex = /hi(?:(?!hi|Jone).)*?Jone/;
var longestString = "";
strings.forEach((str) => {
var match = XRegExp.match(str, regex);
if (match && longestString === "") {
longestString = str;
return;
}
if (match && str.split(" ").length < longestString.split(" ").length) {
longestString = str;
}
});
console.log(longestString);
<script src="https://unpkg.com/xregexp/xregexp-all.js"></script>