效果图

<View className="components-page">
<Textarea
style="font-size:12PX"
className="textareaStyle"
placeholderClass="placeholderStyle"
placeholder="例:公司:xxxx公司, 电话:13*********, 地址:xxxxxx"
autoFocus
onChange={(e) => {
this.setState({ textareaVal: filterEmojis(e.detail.value) });
}}
/>
<AtButton
className="button"
type={"primary"}
onClick={this.handletext}
>
识别
</AtButton>
</View>
数据格式
名称:xxx有限公司
纳税人识别号:0000000MA1JBU7E73
地址:xxxx一路65弄18号
电话:15xxxxxxx
开户行:中国工商银行xxx支行
账号:100xxxxxxxxxxxxxxxx
//或者这种格式
xxx科技有限公司,
xxxxxx1H3FHD65,
xxxxx81420000001634,
xxxxx新片区分行,
888号C楼,
021-xxxx
handletext = () => {
this.validateAndExtract(this.state.textareaVal);
return;
}
validateAndExtract = (textareaVal) => {
if (!textareaVal) {
Toast.fail("不能为空!", 5);
return;
}
const dataArr = textareaVal.split(/[,,]/);
if (dataArr.length !== 6) {
Toast.fail("格式错误!", 5);
return;
}
const cleanArr = dataArr.map((item) =>
item.replace(/[^a-zA-Z0-9\u4e00-\u9fa5()()::\-]/g, "")
);
const processedArr = cleanArr.map((val) => {
const match = val.match(/(?:[::])([^,,]+)/);
return match ? match[1] : val;
});
const extractors = [
{
regex:
/.+?(楼|号|栋|幢|室|层|弄|街道|街|胡同|巷|公寓|大道|道|镇|小区|村|县|支路|里|坊)/,
key: "companyAddress",
},
{
regex: /\b1[3-9]\d{9}\b|\b(?:\d{3,4}-)?\d{7,8}\b/,
key: "companyTelephone",
},
{
regex:
/公司|集团|有限公司|有限责任公司|股份公司|股份有限公司|集团有限公司|控股集团|实业公司|科技发展公司|网络技术公司|贸易中心/,
key: "titleName",
},
{
regex: /^[A-Z0-9]{15}$|^[A-Z0-9]{17}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/,
key: "taxNumber",
},
{
regex: /(银行|支行|分行|总行|营业部)?/,
key: "bankOfDeposit",
},
{ regex: /\b\d{12,22}\b/, key: "bankAccount" },
];
const result = {};
for (const { regex, key } of extractors) {
result[key] = processedArr.find((item) => regex.test(item)) || "";
if (!result[key]) {
if (`${key}` === "companyAddress") {
Toast.fail(`地址识别失败!`, 5);
} else if (`${key}` === "companyTelephone") {
Toast.fail(`手机号识别失败!`, 5);
} else if (`${key}` === "titleName") {
Toast.fail(`公司名称识别失败!`, 5);
} else if (`${key}` === "taxNumber") {
Toast.fail(`税号识别失败!`, 5);
} else if (`${key}` === "bankOfDeposit") {
Toast.fail(`银行名称识别失败!`, 5);
} else if (`${key}` === "bankAccount") {
Toast.fail(`银行账号识别失败!`, 5);
}
return;
}
}
Toast.info("识别成功", 2);
this.setState(result);
};