我有一个函数,它以字符串为参数,我的问题是字符串可以是一句话,比如:"我叫John Doe。我需要一辆车。"或者它可以是一个点号:"this.is.dot.notation"。我对regex不太了解(如果我需要的话),但我想将这两种类型分开。
假设字符串也可以是单词或句子,有没有办法检查字符串是否使用Object/Dot表示法?从…起https://stackoverflow.com/a/2390793/1251031,我想到了这个,但这对一个可能包含多个句号的句子不起作用,对吗?应该使用正则表达式吗?
if(input.split('.').length > 1){
}
稍后,点符号将用于访问Object属性,如下所示:转换点符号中的字符串以获得对象引用
测试字符串是否至少包含2个点,但不包含空格。这似乎就是点符号的定义。
if (str.match(/..*./) && !str.match(/s/)) {
// dot notation
} else {
// sentence
}
或者它可能是一个不在字符串末尾的点,没有空格:
if (str.match(/.[^.]/) && !str.match(/s)) {
这只是检查一个或多个单词字符后面是否有一个点,该点后面有一个或更多单词字符,中间没有空格。如果你只需要一个布尔值,你可以删除三进制(问号和它后面的一切(当然要保留分号))。
function isDotNotation(str) {
return (/[w+].[w+]/gi).test(str) ? "Dot Notation" : "Sentence";
}
这会打破它:isDotNotation("该死");
因此,这里有一个更丑陋的检查一个或多个空格/s的方法。
function isDotNotation(str) {
return ( (/[w+].[w+]/gi).test(str) ) && ( !(/s+/g).test(str) ) ? "Dot Notation" : "Sentence";
}