如果字符串中的每个字符都在正则表达式中,我怎样才能让我的字符串只通过测试?
这是我到目前为止所做的:
String w = theApplet.Word.getText().toLowerCase();
if(w.matches(".*[a-z-_]+.*")){
theApplet.words.add(w);
theApplet.str.setText("The word: "+w+" has been added to the list");
}
但是,即使字符串包含无效字符,该字符串也是有效的,只要它包含正则表达式中至少1个字符。
答案 0 :(得分:1)
dispatch_async(dispatch_get_main_queue()) {
self.collectionView.selectItemAtIndexPath(indexPathToReload, animated: true, scrollPosition: UICollectionViewScrollPosition.CenteredVertically)
self.collectionView(self.collectionView, didSelectItemAtIndexPath: indexPathToReload)
return
}
表示"匹配任何字符零次或多次"
.*
表示"匹配任何小写字符或破折号( - )或下划线(_)一次或多次"。
所以第一部分几乎消耗了整个字符串,如果至少有一个小写字符/短划线/下划线,则正则表达式返回true。
只需删除[a-z-_]+
即可强制所有字符为小写字符/短划线/下划线。