繁体   English   中英

需要正则表达式验证模式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM