javascript - 将单词匹配为单独的字符串,除非它们以大写字母开头

标签 javascript regex

我有这个正则表达式

/[A-Za-zÀ-ÿ]+/g

匹配由无限长度的字符组成的“单词”。

如果我确实想排除以大写字母开头的单词?

我试过了

/(^[A-Z])[A-Za-zÀ-ÿ]+/g

但似乎不起作用。不能使用/w 之类的东西,因为它不包含变音符号。

编辑:使用的语言是 Typescript,因此 javascript 引擎(例如,不允许向后查找)抱歉没有提及这一点。

编辑:给定的输入可以类似于

"foo"            //should match foo and return true
"Foo"            //should not match foo and return false
"fòo"            //should match fòo and return true
" "              //should not match foo and return false
"."              //should not match foo and return false
","              //should not match foo and return false

没有大写字母的代码(Typescript)匹配

isProperWord(word){
    /* rejects
      - string that are not words (symbols, spaces, etc...)
      - names (words starting with a capital letter)
    */
    if(word.match(/[A-Za-zÀ-ÿ]+/g)){
      return true;
    }else{
      return false;
    }

}

最佳答案

表达式^[A-Z]表示匹配行首的大写字符。您可能尝试输入 [^A-Z] 来匹配 A 和 Z 之间不是大写字母的字符,但这仍然没有帮助,因为正则表达式引擎会在某处找到匹配的字符这点,并得到满足。 (例如,空格与此基本匹配 - 它是一个字符,并且不在 A 到 Z 的范围内。)

如果您使用的正则表达式方言可以理解 \b 的单词边界,请尝试

/\b[a-z][A-Za-z]*/

匹配左侧有单词边界且与其相邻的小写字符的标记。 (我忽略了您的区域设置扩展,它不可移植并且可能没有明确定义。)

单独而言,/g 标志不执行任何操作。如果您有一种支持它的语言,并在 while 循环或类似循环中使用正则表达式,它将导致引擎在循环内一次返回字符串中的所有匹配项;但如果没有进一步的背景,我们不知道这是否属实。

关于javascript - 将单词匹配为单独的字符串,除非它们以大写字母开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47473088/

相关文章:

javascript - 为 div 中的 span 中的链接中的图像找出 jQuery 选择器

javascript - 无法在 Angular 水疗中心加载不同的页面

regex - 使用 Golang 正则表达式在字符串中查找数字

javascript - 从 React MaterialUI RadioButtonGroup 获取值和 id

javascript - 如何获取图像链接以根据文本框实时更改?

php - 正则表达式从自定义代码创建 html

java - 如何找到字符串和两个点之间的东西?

用于拆分和匹配的正则表达式命令

javascript - JS Regex 查找几个 a 标签的 href

javascript - 将变量传递给 test(window.location) javascript