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

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, 10, 300, 100);

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

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

		submit = new JButton("Submit");
		submit.setBounds(150, 250, 100, 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, 300, 360, 20);
		result_panel.setBackground(Color.WHITE);
		result_panel.setLayout(null);

		result = new JLabel(" Result  :  Waiting");
		result.setBounds(140, 0, 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("\r\n\t\t\tregex : ");
				bw.append(regex);
				bw.append("\r\n\t\t\tSource : ");
				bw.append(source);
				bw.append("\r\n\t\t\tResult : ");
				bw.append(String.valueOf(result));
				bw.append("\r\n\r\n");

				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, 0, 150, 20);
		result.setText(error);
		result_panel.setBackground(Color.PINK);
		result.setBackground(Color.PINK);
		frame.repaint();
	}
}


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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值