正则表达式匹配包含至少一个'x'但不包含任何'y'的单词

时间:2013-11-08 05:46:28

标签: regex perl

我想在包含至少一个/的字符串/行的开头匹配一个单词。单词可以包含任何字母数字或特殊字符。即包含至少一个/的非空格字符的单词。

例如,

a/b/c 1.2 1.0    # match
a/b-d/c 1.2 1.0    # match
a_b_c 1.2 1.0    # NO match
a/b_c 1.2 1.0    # match

^\S+^[^ ]+可以获取第一个字但无法弄清楚如何保证其中至少有一个/

一般情况下,我正在寻找一个正则表达式来匹配一个包含至少一个' x '但不包含任何' y '的字符串

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

以下正则表达式适合您:

 ^(?=[^\/\s]*\/)\S+

lookahead将确保第一个单词中至少有一个/

OP建议:此正则表达式也应该有效:

^[^ ]*\/[^ ]*

<强>测试

 var re = /^(?=[^\/\s]*\/)\S+/;

 re.test('/abc'); // true
 re.test('abc/'); // true
 re.test('abc /def'); // false
 re.test('a-b-c /def'); // false
 re.test('/ /def'); // true
 re.test(' /def'); // false
 re.test('/def'); // false