Regex只存储在string-js中找到的一个匹配元素

Regex to store only one matching element found in a string-js

本文关键字:一个 元素 存储 string-js Regex      更新时间:2023-09-26

我可能会问一个愚蠢的任务,但我真的很想知道是否有一个正则表达式只从字符串中获得第一个匹配的字母?如:

var string = "abcdaeee";
var value = 'a';

值和字符串字段是动态的,因此它们可以变化。在上述情况下,我愿意只获得字符串中var 'value'(即'a')的第一个匹配字母。我现在有这个regex:

regex = new RegExp("(" + value + ")", "i"); 
string.match(regex)

可以改成:o/p: a,a

string.match(someValidRegex)// to o/p: a

但是这个从字符串中得到所有匹配的a。是否有一种方法在regex中仅显示匹配元素的第一次出现?["a"]

谢谢!

抱歉,这是第一个不使用正则表达式的匹配字母的解决方案

如果你只想得到一个字符串的第一个匹配的字母,我认为regex有点过分了。

    function getFirstMatchedLetter(str,letter){
        var letterPosition = str.search(letter);
        return str.charAt(letterPosition);
    }
    getFirstMatchedLetter("hello","l");

或者,如果可能的话,您可以使用两个正则表达式。一个用于提取字符串,另一个用于解析提取的字符串以获取您的字符或其他内容。

var str = "blah blah blah something blah blah blah";
var matched = str.match(/something/);
var character_matched = matched[0].match(/e/);

变量character_matched现在应该包含您的字母。您可以更改var matched行中的"something"和var character_matched行中的"e"以满足您的需要。然而,我的问题是:您提取特定单词/字符串中的字符是为了什么?

另外,如果你匹配一个正则表达式不止一次,检查你是否打开了全局变量


另外:

var str = "hello";
var letter = "p";
var exists = str.search(letter);
if (exists != -1)
{
    # character is in the string, do something
}
else
{
    # character not in string, do something else
}