加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

最近写的一个正则表达式验证器,很简单!很简单!

发布时间:2020-12-14 02:23:59 所属栏目:百科 来源:网络整理
导读:package com.freud.regex;import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.OutputStreamWriter;import
package com.freud.regex;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

/**
 * 
 * @title 0150 ( Small Tool ) - Regex_Validate_tool
 * @author Freud,Kang
 * 
 */
public class Validater {

	/** The main frame */
	private JFrame frame;
	/** The background panel */
	private JPanel background;

	/** The Label to show "regex" */
	private JLabel regex_Label;
	/** The TextArea to input regex expression */
	private JTextArea regex_TextArea;
	/** The Label to show "source" */
	private JLabel source_label;
	/** The TextArea to input source string */
	private JTextArea source_TextArea;

	/** The submit button */
	private JButton submit;
	/** The result Label to show result message */
	private JLabel result;
	/** The result Panel to show Color status */
	private JPanel result_panel;

	/**
	 * Constructor
	 */
	private Validater() {

		/**
		 * init main frame
		 */
		frame = new JFrame("Regex Validator");
		frame.setBounds(100,100,400,500);
		frame.setVisible(true);
		frame.setLayout(null);
		frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);

		/**
		 * init main panel
		 */
		background = new JPanel();
		background.setSize(400,500);
		background.setLayout(null);
		background.setBackground(new Color(80,188,252));

		/**
		 * init components in main panel
		 */
		regex_Label = new JLabel("Regex");
		regex_Label.setBounds(10,10,50,20);

		regex_TextArea = new JTextArea();
		regex_TextArea.setBounds(60,300,100);

		source_label = new JLabel("Source");
		source_label.setBounds(10,130,10);

		source_TextArea = new JTextArea();
		source_TextArea.setBounds(60,100);

		submit = new JButton("Submit");
		submit.setBounds(150,250,30);
		submit.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				String source = source_TextArea.getText();
				String regex = regex_TextArea.getText();

				if (regex == null || regex.isEmpty()) {
					notEmpty("Regex cannot be empty!");
					return;
				}

				reset(exe(source,regex));
			}
		});

		/**
		 * init result panel
		 */
		result_panel = new JPanel();
		result_panel.setBounds(10,360,20);
		result_panel.setBackground(Color.WHITE);
		result_panel.setLayout(null);

		result = new JLabel(" Result  :  Waiting");
		result.setBounds(140,110,20);
		result.setBackground(Color.WHITE);

		/**
		 * add the components to correct parents components
		 */
		result_panel.add(result);

		background.add(regex_Label);
		background.add(regex_TextArea);
		background.add(source_label);
		background.add(source_TextArea);
		background.add(submit);
		background.add(result_panel);

		frame.add(background);

		// repaint
		frame.repaint();
	}

	/**
	 * Use java API to judge whether source and regex matched
	 * 
	 * @param source
	 *            source string
	 * @param regex
	 *            regex expression
	 * @return
	 */
	private boolean exe(String source,String regex) {
		try {

			Pattern pattern = Pattern.compile(regex);
			Matcher matcher = pattern.matcher(source);

			boolean result = matcher.matches();
			String path = Validater.class.getProtectionDomain().getCodeSource().getLocation().toString().replace("file:/","").replace("file:","")
					.replace("bin","").replace("bin/","");

			BufferedWriter bw = null;

			try {

				bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(path + "Regex_validated_Log.txt"),true)));

				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				String date = sdf.format(new Date());

				bw.append(date);
				bw.append("rntttregex : ");
				bw.append(regex);
				bw.append("rntttSource : ");
				bw.append(source);
				bw.append("rntttResult : ");
				bw.append(String.valueOf(result));
				bw.append("rnrn");

				bw.flush();
			} finally {
				if (bw != null) {
					bw.flush();
					bw.close();
				}
			}

			return result;

		} catch (Exception e) {
			return false;
		}

	}

	/**
	 * Main method
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		new Validater();
	}

	/**
	 * According to the compared result,reset the result components
	 * 
	 * @param flag
	 *            Type : Boolean
	 */
	private void reset(boolean flag) {
		/**
		 * if the result is true means the regex matches the source string
		 */
		if (flag) {
			result_panel.setBackground(Color.GREEN);
			result.setBackground(Color.GREEN);
			result.setText(" Result  :  success");

			/**
			 * Otherwise means not matched
			 */
		} else {
			result_panel.setBackground(Color.RED);
			result.setBackground(Color.RED);
			result.setText(" Result  :  failed");
		}

		// repaint
		frame.repaint();
	}

	private void notEmpty(String error) {
		result.setBounds(120,150,20);
		result.setText(error);
		result_panel.setBackground(Color.PINK);
		result.setBackground(Color.PINK);
		frame.repaint();
	}
}


最近写的一个正则表达式验证器,很简单,很简单。不过很好玩!

没有什么技术含量,贴出来玩玩吧!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读