Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用正则表达式获取特定字符后的所有字符,例如逗号(“,”)_Javascript_Regex - Fatal编程技术网

Javascript 如何使用正则表达式获取特定字符后的所有字符,例如逗号(“,”)

Javascript 如何使用正则表达式获取特定字符后的所有字符,例如逗号(“,”),javascript,regex,Javascript,Regex,需要正则表达式才能从变量中获取,(不包括它)之后的所有字符。例如,此变量可以包含 'SELECT___100E___7',24 'SELECT___100E___7',1 'SELECT___100E___7',286 'SELECT___100E___7',5147 注意:此变量中的,后面可以有任意长度的字符 对regexp的解释将为新手提供额外的帮助:) 编辑:一个javascript答案也一样好 [^,]*$ 也许可以。(匹配最后一个逗号后的所有内容) 说明:[^,]匹配除,之外的所有

需要正则表达式才能从变量中获取
(不包括它)之后的所有字符。例如,此变量可以包含

'SELECT___100E___7',24
'SELECT___100E___7',1
'SELECT___100E___7',286
'SELECT___100E___7',5147
注意:此变量中的
后面可以有任意长度的字符

对regexp的解释将为新手提供额外的帮助:)

编辑:一个javascript答案也一样好

[^,]*$
也许可以。(匹配最后一个逗号后的所有内容)

说明:
[^,]
匹配除
之外的所有字符。
*
表示regexp匹配任何数量的
[^,]
重复。
$
符号与行尾匹配。

这应该有效

preg_match_all('@.*\,(.*)@', '{{your data}}', $arr, PREG_PATTERN_ORDER);
您可以在此处进行测试:

正则表达式:
*\,(*)

这里对JavaScript进行相同的正则表达式测试:

说明:

.+,
将搜索逗号之前的所有内容,包括逗号

(.+) 
将搜索逗号后的所有内容,具体取决于您的正则表达式环境

\1
是第一个括号的引用,在本例中,您需要逗号后的所有内容。

简短回答
(.+) 
要么:

  • ,[\s\s]*$
    ,.*$
    以匹配第一个逗号后的所有内容(请参阅使用哪个逗号的说明);或

  • [^,]*$
    匹配最后一个逗号后的所有内容(这可能是您想要的)

例如,您可以在JavaScript中使用
/[^,]*/.exec[0]
,其中s是原始字符串。如果要使用多行模式并以这种方式查找所有匹配项,可以使用
s.match(/[^,]*/mg)
获取数组(如果变量中有多个已发布的示例行位于单独的行上)

解释
  • [\s\s]
    是一个字符类,它同时匹配空白字符和非空白字符(即所有字符)。这与
    不同,因为它匹配换行符
  • [^,]
    是一个否定字符类,它匹配除逗号以外的所有字符
  • *
    表示上一项可以重复0次或更多次
  • $
    是要求匹配的结尾位于字符串末尾(如果使用/m多行标志,则为行尾)的定位点
对于第一个匹配,第一个正则表达式将查找第一个逗号
,然后匹配所有字符,直到第
[\s\s]*$
行结束,包括逗号


第二个正则表达式在行尾之前匹配尽可能多的非逗号字符。因此,整个匹配将在最后一个逗号之后。

您不需要正则表达式来完成此操作。下面是一个例子:

var str = "'SELECT___100E___7',24";
var afterComma = str.substr(str.indexOf(",") + 1); // Contains 24 //

另一个想法是做
myVar.split(',)[1]


对于简单的情况,不使用regexp是一个好主意…

您可以尝试以下方法:

new_string = your_string.split(',').pop().trim();
这就是它的工作原理:

  • split(',')
    创建一个由
    字符串的不同部分组成的数组
(例如,如果字符串是
“'SELECT\uuuuuuu100e\uuuuuuuuu7',24”
,则数组将是
[“'SELECT\uuuuuu100e\uuuuuuuuu7',24”]

  • pop()
    获取数组的最后一个元素
(在本例中,它将是
“24”

这已经足够了,但如果可能有一些空间(不是在OP的情况下,而是在一般情况下),我们可以:

  • trim()
    ,它将删除字符串周围的空格(如果是
    “24”
    ,它将变成
    “24”

这是一个简单的解决方案,肯定比regexp更容易。

这匹配任意长度的单词:

var phrase = "an important number comes after this: 123456";
var word = "this: ";
var number = phrase.substr(phrase.indexOf(word) + word.length);
// number = 123456

也许你可以试试这个

var str = "'SELECT___100E___7',24";
    var res = str.split(',').pop();

你用哪种语言?如果您想要一个Java示例,那么一个Perl示例答案会让您感到困惑。javascript/jQuery抱歉,我忘了提及。类似于这样的var result_val=$(this.attr('href').match(RegEX);为什么你绝对需要正则表达式?这个解决方案可以很容易地通过基本的字符串操作实现。Meta-comment:如果你从谷歌搜索来这里,你正在寻找正则表达式的帮助,有些恼人的是,你会发现很多答案说“你不需要正则表达式”,这并不匹配
之后的所有内容,但除了
之外的任何内容。如果没有
,该怎么办?原始帖子中的示例表明有一个逗号。没有定义没有逗号的行为,所以这应该没问题。对不起,我的错误是没有包括我想要的语言。您仍然可以使用相同的regex。您的第二个答案有效,但我决定使用非regex解决方案。谢谢你的努力!!!事实上,不,我不需要一个正则表达式的答案。为了更清楚地反映这一点,我已经改变了我的问题,你的答案非常清楚并且有效。这会在任何长度的单词后得到文本:可能需要一点解释。与regexp解决方案相比,它的优点和缺点是什么?我没有发现任何缺点。。我发现这很容易,因为正则表达式通常是不可理解的