[英]Regex Valdation Pattern Required
这里有人能告诉我有关创建此验证模式的信息吗?
所有句子都以大写开头,消息以句号结尾。 没有拼写错误。
对于从 Web 输入的杂乱数据,这种方法可能并不完全可靠,因为您可能会发现许多示例文本不符合您的严格规则。 您的消息中有外文字母。 但这里有一些基本代码:
将文本拆分成句子(使用后视断言):
message = "A test. Not what I wanted."
sentences = message.split(/(?<=\.)\s*/)
.map(sentence => sentence.trim())
.filter(sentence => sentence)
;
// sentences = ["A test.", "Not what I wanted."]
所有句子都以大写字母开头(加上可选的空格)。 如果句子缺少句点,则此分词器会将两个句子视为一个句子。
is_all_capital = sentences
.map(sentence => sentence.match(/^\s*[A-Z]/))
.every(str => !!str) // cast to boolean
;
消息以句号结束(加上可选的空格)
is_end_period = !!message.match(/\.\s*$/);
没有拼写错误。
注意:这可能会中断,因为您的字典不完整,您的文本语料库包含带连字符的单词,不包含撇号,或者标记器弄乱了特殊字符或带有数字的单词。
dictionary = fs.readFileSync('dictionary.txt')
.toLowerCase()
.split('\n')
.reduce((store,x) => ({ ...store, [str]: true }), {})
;
message_tokens = [ ...message.toLowerCase().matchAll(/[a-z]([\w-']*\w)*/g) ]
.filter(match => !!match)
.map(match => match[0] )
;
// message_tokens = ["a", "test", "not", "what", "i", "wanted"]
is_spellchecked = message_tokens.every(token => !!dictionary[str])
如果您对拼写检查很认真,您可能想研究特定的拼写检查库
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.