我有以下样本邮件集
EmailAddress
1123
123.123
123_123
123@123.123
123@123.com
123@abc.com
123mbc@abc.com
123mbc@123abc.com
123mbc@123abc.123com
123mbc123@cc123abc.c123com
如果在@
之前包含完全数字,则需要删除mailidExpected output:
123mbc@abc.com
123mbc@123abc.com
123mbc@123abc.123com
123mbc123@cc123abc.c123com
我在Java Rex下面使用过。但它消除了一切。我有写这些表达的基本知识。请帮我纠正下面的一个。提前谢谢。
[^0-9]*@.*
答案 0 :(得分:1)
以下正则表达式只允许电子邮件地址通过符合您的规范:
(?m)^.*[^0-9@\r\n].*@
注意你必须指定多行匹配(m
标志。请参阅现场演示。该解决方案使用嵌入式标志语法m
标志。您也可以使用Pattern.compile
调用Pattern.MULTILINE
@
参数。)。
regex101的现场演示。
<强>解释强>
策略:将基本合理的电子邮件地址定义为包含^
的单行字符串,严格排除数字前缀。
@
:行首锚[^...]
:基本合理的电子邮件地址必须与at-sign匹配@
:在at符号之前,一个字符既不是数字也不是CR / LF。还包括.*
,测试的非数字字符不得是第一个签名!apply plugin: 'com.android.application'
android {
signingConfigs {
debugFromAdventPC {
keyAlias 'androiddebugkey'
keyPassword 'android'
storePassword 'android'
storeFile file('/home/nick/AndroidStudioKeystores/FromAdventPC/debug.keystore')
}
releaseFromAdventPC {
keyAlias 'release_alias'
keyPassword 'deleted'
storeFile file('/home/nick/AndroidStudioKeystores/FromAdventPC/my-release-key.keystore')
storePassword 'deleted'
}
}
compileSdkVersion 'Google Inc.:Google APIs:18'
//compileSdkVersion 15
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "deleted"
minSdkVersion 9
targetSdkVersion 15
}
buildTypes {
release {
minifyEnabled true
proguardFiles 'proguard.cfg'
}
}
}
android {
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}
dependencies {
compile files('libs/osmdroid-android-4.1.jar')
compile files('libs/slf4j-android-1.5.8.jar')
}
:在非数字测试之前和之后,允许任意字符串(嗯,实际上它们不是,但真正的语法验证的电子邮件地址可能不应该发生在这里,绝对不应该是基于可靠性和代码可维护性的正则表达式)。字符串需要在模式中表示,因为模式是锚定的。答案 1 :(得分:1)
(.*[a-zA-Z].*[@]\w*\.\w*)
细分<{1}} = 0个字符以上
.*
= 1 信件[a-zA-Z]
= 0个字符以上.*
@
无尽的时间a-zA-Z0-9与单身。之间
这样您就可以收到至少包含一个字母的电子邮件
见https://regex101.com/r/qV1bU4/3
按照ccf的建议进行编辑并更新了细分
答案 2 :(得分:0)
试试这个:
[^\d\s].*@.+
它将匹配@
符号前至少有一个字母或符号的电子邮件。