我有这个正则表达式
/[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/