RegEx用于匹配名字,后跟空格

时间:2019-05-15 15:42:21

标签: javascript html regex regex-negation regex-group

我想匹配一个首字母大写,后跟其他字母字符但没有空格的名称,因此本质上是一个名字,例如:Kevin。

我尝试以下操作似乎无效:

pattern = "([A-Z]\w+)(^\s)"

3 个答案:

答案 0 :(得分:1)

您可以简单地将表达式与末尾$字符绑定,就足够了:

([A-Z][a-z]+)$

如果您想添加更多边界,也可以将其与开始^字符绑定:

^([A-Z][a-z]+)$

如果需要,您也可以删除捕获组,并且该捕获组仍将匹配。

[A-Z][a-z]+$

RegEx

您可以在regex101.com中修改/更改表达式。

enter image description here

RegEx电路

您可以在jex.im中可视化您的表情:

enter image description here

JavaScript演示

const regex = /([A-Z][a-z]+)$/gm;
const str = `Kevin`;
const subst = `$1`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

答案 1 :(得分:1)

我会使用Emma使用的([A-Z][a-z]+)$的变体形式。

此RegEx将获得每个条目的名字,并且即使该条目只有名字也可以使用。

名称将由换行符分隔。

Regex test

答案 2 :(得分:0)

编辑:已更新,以在首字母大写之后包含任何单词字符。

尝试像这样的负面展望:

([A-Z]\w+\b(?!\s))

在上面的示例中,\b在单词的末尾查找边界,而(?!\s)如果找到空格,将使正则表达式失败。此答案与接受的答案之间的主要区别在于,当设置了多行标志时,它还会选择换行符并失败。

一如既往,这取决于您的用例。

工作示例:

const matchName = /([A-Z]\w+\b(?!\s))/
console.log(matchName.test("kevin")) // false
console.log(matchName.test("Kevin")) // true
console.log(matchName.test("Kevin ")) // false
console.log(matchName.test("KeVin")) // true
console.log(matchName.test("Kevin\n")) // false