我的程序用于整理电子邮件并查找没有适当扩展名的电子邮件。为此,我正在Regex中进行实验,可以使它检测电子邮件中是否具有扩展名,或者根本没有扩展名,但是无法使程序检测该行中的扩展名是否不是我希望的特定扩展名。排除。
我尝试使用诸如?之类的标签!与陈述,并没有结果。我在正则表达式方面没有很多经验,所以我的尝试被编号了。
import { HttpParams, HttpClient } from "@angular/common/http";
export class UploadAdapter {
constructor(
private loader,
public url:string,
private http:HttpClient
) {
}
//the uploadFile method use to upload image to your server
uploadFile(file,url?:string,user?:string){
let name = '';
url='your api';
let formData:FormData = new FormData();
let headers = new Headers();
name = file.name;
formData.append('attachment', file, name);
const dotIndex = name.lastIndexOf('.');
const fileName = dotIndex>0?name.substring(0,dotIndex):name;
formData.append('name', fileName);
formData.append('source', user);
headers.append('Content-Type', 'multipart/form-data');
headers.append('Accept', 'application/json');
console.log('formData',formData);
let params = new HttpParams();
const options = {
params: params,
reportProgress: true,
};
//http post return an observer
//so I need to convert to Promise
return this.http.post(url,formData,options);
}
//implement the upload
upload() {
let upload = new Promise((resolve, reject)=>{
this.loader['file'].then(
(data)=>{
this.uploadFile(data,this.url,'test')
.subscribe(
(result)=>{
//resolve data formate must like this
//if **default** is missing, you will get an error
**resolve({ default: result['attachment'] })**
},
(error)=>{
reject(data.msg);
}
);
}
);
});
return upload;
}
abort() {
console.log("abort")
}
}
该程序应能对所有扩展名不是@ Google.org或@ yahoo.net的电子邮件进行整理
程序找不到匹配项
答案 0 :(得分:1)
您可以试试吗? https://regex101.com/r/hbnvr8/1/
Pattern.compile("^([A-Za-z0-9.]+(\\.?)+([A-z0-9]?))+@(?!(Yahoo.net|Google.org)$)[A-z]+\\.[A-z]+$")
答案 1 :(得分:0)
让这种模式适用于后遗症:
toFixed
答案 2 :(得分:0)
您可以使用否定的前行(?!Google\.org|Yahoo\.net)
来断言@
右侧的直接不是Google.org还是Yahoo.net。请注意对点进行转义以使其在字面上匹配。
如果您要允许的唯一字符列在字符类[A-Za-z0-9.]
中,则可以使用正则表达式,该正则表达式首先使用[A-Za-z0-9]+
来匹配不带点的字符类,
然后使用(?:\.[A-Za-z0-9])*
从点开始重复0+次,以防止电子邮件以点开始或结束。
请注意,您可以扩展character classes以允许更多字符。
^[A-Za-z0-9]+(?:\.[A-Za-z0-9])*@(?!Google\.org|Yahoo\.net)[A-Za-z0-9]+(?:\.[A-Za-z0-9])*\.\w+$
在Java中
String regex = "^[A-Za-z0-9]+(?:\\.[A-Za-z0-9])*@(?!Google\\.org|Yahoo\\.net)[A-Za-z0-9]+(?:\\.[A-Za-z0-9])*\\.\\w+$";