Если вы хотите сделать это с помощью регулярного выражения, это выражение сделает это, даже если в слове "priority" может быть написано опечатка:
(.+)(\s[priorty]+)
![enter image description here](https://i.stack.imgur.com/OpoQm.png)
Он может просто использовать группы захвата для ввода желаемого слова перед «приоритетом».Если вы хотите добавить какие-либо границы к нему, это будет гораздо проще, особенно если ваша входная строка изменится.
График
Этот график показывает, как будет работать выражение, и вы можете визуализировать другие выражения в этой ссылке :
![enter image description here](https://i.stack.imgur.com/l7Tn3.png)
const regex = /(.+)(\s[priorty]+)/gmi;
const str = `high priority
low priority
medium priority
under-processing pririty
under-processing priority
400-urget priority
400-urget Priority
400-urget PRIority`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Тест производительности
Этот фрагмент JavaScript показывает производительность этого выражения с использованием простого цикла for
в миллион раз.
repeat = 1000000;
start = Date.now();
for (var i = repeat; i >= 0; i--) {
var string = "high priority";
var regex = /(.+)(\s[priorty]+)/gmi;
var match = string.replace(regex, "$1");
}
end = Date.now() - start;
console.log("YAAAY! \"" + match + "\" is a match ??? ");
console.log(end / 1000 + " is the runtime of " + repeat + " times benchmark test. ? ");